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

Eric zhou發表於2022-03-22

.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 

 

相關文章