.NET 6 发布后,我们现有的应用会逐步升级到这个版本,首当其冲的是原因的ASP.NET Core的工程,如果一步一步升级到ASP.NET Core 6.0。
上一篇博文中,跟大家详细介绍了中间件、添加终结点路由、内容根、应用名称和环境、添加配置提供程序、添加日志记录提供程序、DI依赖注入管理添加、注册服务这几块升级中的一些常用代码实现。
一步一步迁移ASP.NET Core 6.0-Part1
本文我们继续其他的一些升级ASP.NET Core 6.0的一些常用代码示例。
一、通用主机Host构造器
ASP.NET 5 中使用Host类自定义IHostBuilder的实现代码:
升级ASP.NET Core 6.0后的代码实现:
在ASP.NET Core 6.0中通过WebApplication这个类可以直接创建一个IHostBuilder的实现Microsoft.AspNetCore.Builder.WebApplicationBuilder,基于这个类设置Host启动的一些属性:
如下代码:
关于WebApplication的解释,大家可以参考以下链接:
WebApplication 类 https://docs.microsoft.com/zh-CN/dotnet/api/microsoft.aspnetcore.builder.webapplication?view=aspnetcore-6.0
二、Web主机Host构造器
ASP.NET 5 中使用Host类自定义IHostBuilder的实现代码:
升级ASP.NET Core 6.0后的代码实现:
在ASP.NET Core 6.0中通过WebApplication这个类可以直接创建一个IHostBuilder的实现Microsoft.AspNetCore.Builder.WebApplicationBuilder,基于这个类设置WebHost启动需要的一些属性:
如下代码:
三、更改Web根
默认情况下,Web 根是相对于 wwwroot 文件夹中的内容根。 Web 根是静态文件中间件查找静态文件的位置。
通过设置 WebApplicationOptions 上的 WebRootPath 属性,可以更改 Web 根:
以下是ASP.NET Core 5.0 中对Web根的使用:
升级ASP.NET Core 6.0后的代码实现:
直接设置WebApplicationOptions的WebRootPath即可:
四、自定义依赖注入 (DI) 容器
我们以Autofac 依赖注入框架为例,给大家示例ASP.NET Core5.0的实现和ASP.NET Core6.0的实现
ASP.NET Core 5.0使用Autofac作为DI依赖注入容器的代码实现:
ASP.NET Core 6.0使用Autofac作为DI依赖注入容器的代码实现:
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory()); builder.Host.ConfigureContainer<ContainerBuilder>(builder => builder.RegisterModule(new MyApplicationModule()));
五、添加服务、使用服务
Startup.Configure 可以注入通过 IServiceCollection 添加的任何服务。
ASP.NET Core 5.0的代码实现:
在 ASP.NET Core 6 中:有一些通用服务可用作 WebApplication 上的顶级属性。
其他服务需要通过 IServiceProvider 从 IServiceProvider 手动解析
以上是升级ASP.NET Core 6.0的一些常用代码示例和实践,分享给大家。
周国庆
2022/3/22