一步一步迁移ASP.NET Core 6.0-Part2

.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 类 //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