.net6 Program.cs 文件解析

这篇具有很好参考价值的文章主要介绍了.net6 Program.cs 文件解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Program.cs 是整个Web应用程序的入口文件,.NET6 用了极简单的风格搞定了很多事情。

Program.cs中首先注意的是:

        1.builder.Services.AddXXX是用来添加服务的,builder是WebApplicationBuilder对象;

        2.builder.Services.Configure<T>(具体配置文件中的节点)是用来配置服务的。当然有时候这步也可以省略了,到了第3步使用服务时,再配置具体选项也可以。写法如

Services.Configure<SalarySyOptions>(configuration.GetSection("SalarySy"));

        3.app.Services.UseXXX是用来实例化服务的,app是builder创造的具体实例,而这个具体实例又会获取已添加服务(中间件)的具体实例!

基本就这3个步骤,添加服务→配置服务→使用服务!

Program.cs 是整个Web应用程序的入口文件,.NET6 之前有一个入口函数 Main() , NET6中去掉了 ,其中的代码没有任何函数定义,

打开就可以开干了,这里的语句就是顶级语句, 代码非常简洁,如下:

.net6 Program.cs 文件解析

关于顶级语句可以参考微软官网的介绍:

https://docs.microsoft.com/zh-cn/dotnet/csharp/fundamentals/program-structure/top-level-statements,

https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/proposals/csharp-9.0/top-level-statements,

摘录如下:

.net6 Program.cs 文件解析

顶级语句在编译过后会生成 Program 类和 Main() 方法(名称不是固定的),方法的签名根据语句的不同而有差异,具体如下:

.net6 Program.cs 文件解析

下面介绍一下各条语句的作用:

第1行, var builder = WebApplication.CreateBuilder(args);   WebApplication 表示整个Web应用程序 ,调用CreateBuilder()方法创建一个

WebApplicationBuilder 对象。

第4行,builder.Services.AddRazorPages();  WebApplicationBuilder 对象添加 RazorPages 服务 , 也可以添加其他服务,比如依赖注入、

登录等。

第6行,var app = builder.Build();构造一个 WebApplication 实例。

第12~15行,添加一个异常处理中间件,此中间件发生作用的条件是:当前运行环境必须是开发环境 ,如果 Web 应用程序出现异常,

则跳转到 Error.cshtml 这个页面,如下图,微软已经很贴心的帮我们把异常页都准备好了。

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
}

.net6 Program.cs 文件解析

第17行,app.UseStaticFiles(); 启用静态文件中间件,加上这行代码后, 我们在浏览器中才能访问 wwwroot 目录下的文件,否则会报错。

我们先在解决方案的 wwwroot目录增加一个图片文件如下:

.net6 Program.cs 文件解析

在浏览器中访问此图片如下:

.net6 Program.cs 文件解析

去掉 app.UseStaticFiles(); 再访问是这样的:

.net6 Program.cs 文件解析

同样的道理,如果我们在项目中需要把某些文件放在新的目录中,需要在 Program.cs 中启用相应的中间件才行,

具体怎么做我们想后续的演示中碰到了再展开。

第19行 ,app.UseRouting(); 启用路由中间件,启用后在浏览器中输入网址 Web应用才能正确解析。

第21行,app.UseAuthorization(); 启用权限验证中间件,当我们的网站是基于身份认证的话需要用到,

一般购物网站都需要启用,如果只是纯展示性的比如企业官网等可以去掉。

第23行,app.MapRazorPages(); 启用Razor Pages中间件,如果是MVC应用,则使用 app.UseMvc(); 中间件。

第25行,app.Run(); 启动应用,当我们开始执行WebApp , 浏览器就会帮我们打开网站 Index 页面了,

如果去掉这一行,报错如下:没有与此对象关联的进程。

.net6 Program.cs 文件解析

Web应用程序已经无法运行了文章来源地址https://www.toymoban.com/news/detail-465174.html

到了这里,关于.net6 Program.cs 文件解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • .net6.0引用的dll放置单独的文件夹

    .net6.0 采用原有的设置方法不起作用 http://www.dedeyun.com/it/csharp/104076.html 需要在App.xaml.cs文件中加入以下代码 https://9to5answer.com/using-an-absolute-path-in-probing-privatepath

    2024年02月12日
    浏览(26)
  • .Net6与Framework不同方式获取文件哈希值的性能对比

    算法:MD5、SHA1、SHA256、SHA384、SHA512 文件数:200 平台对比:.NET 6 vs .NET Framework 4.7.2 .NET 6 的性能确实远比.NET Framework要高; SHA1 性能最高,MD5次之,另外几种算法性能远低前两者;

    2024年02月07日
    浏览(31)
  • 银河麒麟服务器v10 sp1 .Net6.0 上传文件错误

    上一篇:银河麒麟服务器v10 sp1 部署.Net6.0 http https_csdn_aspnet的博客-CSDN博客 .NET 6之前,在Linux服务器上安装 libgdiplus 即可解决,libgdiplus是System.Drawing.Common原生端跨平台实现的主要提供者,是开源mono项目。地址:GitHub - mono/libgdiplus: C-based implementation of the GDI+ API 因此,解决方法

    2024年02月12日
    浏览(32)
  • .net6Api后台+VUE3前端实现上传和下载文件全过程

    首先本文参考的是,感谢博主: net6WebApi上传下载文件_cduoa的博客-CSDN博客_webapi下载文件 在博主的基础上,增加了新的功能,代码中有注明,并且使用VUE3前端实现。 后端部分: 1.首先建立IFileService文件 2.建立FileService文件 3.增加FileController文件 4.Program文件中,进行配置和跨域

    2023年04月09日
    浏览(44)
  • 银河麒麟服务器v10 sp1 部署.Net6.0项目后无法访问静态文件

    上一篇:银河麒麟服务器v10 sp1 部署.Net6.0 http https_csdn_aspnet的博客-CSDN博客 由于本人项目直接从.NetCore3.1升级到.Net6.0的,请参考文章:NetCore3.1项目升级到Net6.0_vs2022 没有startup_csdn_aspnet的博客-CSDN博客 虽然部署项目后,swagger与接口可以正常访问,但是静态文件,如html、css、j

    2024年02月12日
    浏览(29)
  • 银河麒麟服务器v10 sp1 .Net6.0 上传文件错误 access to the path is denied

    上一篇:银河麒麟服务器v10 sp1 部署.Net6.0 http https_csdn_aspnet的博客-CSDN博客 .NET 6之前,在Linux服务器上安装 libgdiplus 即可解决,libgdiplus是System.Drawing.Common原生端跨平台实现的主要提供者,是开源mono项目。地址:GitHub - mono/libgdiplus: C-based implementation of the GDI+ API 因此,解决方法

    2024年02月12日
    浏览(57)
  • .Net6下使用Ado.Net

    Ado.Net,是微软提供的在.Net平台下操作数据库(本文实例记录MySQL、SQLSever数据的基本操作)、XML文件和应用程序数据的一个工具。是应用程序和数据库之间的数据桥梁。它拥有一组丰富的类、方法和接口,有效地处理数据库中的数据。(上层的ORM框架《EFCore、Dapper等》都是对它

    2024年02月05日
    浏览(39)
  • 【Net6】Net 5.0迁移到Net 6.0

    .NET 5.0 将于 2

    2024年02月04日
    浏览(33)
  • .Net6 .Net7 支持的 Windows 版本

    .NET 6 支持下列 Windows 版本: (OS) Version 体系结构 Windows 11 21H2 x64、Arm64 Windows 10 客户端 1607+ x64、x86、Arm64 Windows 客户端 7 SP1+、8.1 x64、x86 Windows Server 2012+ x64、x86 Windows Server 核心 2012+ x64、x86 Nano Server 1809+ X64 如果要在以下 Windows 版本上安装 .NET SDK 或运行时,则需要其他依赖项:

    2024年02月16日
    浏览(26)
  • Ubuntu 安装.net6.0+配置 .net环境变量

    wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh sudo chmod +x ./dotnet-install.sh 该脚本默认安装最新的 长期支持 (LTS) SDK 版本,即 .NET 6。 若要安装最新版本(可能不是 LTS) 版本的 (版本),请使用  --version latest  参数。 ./dotnet-install.sh --version latest 若要安装 .NET 运行时而非 SDK,

    2024年02月09日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包