一步一步遷移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