日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

ASP.NET?Core通用主機的系統配置_實用技巧

作者:天方 ? 更新時間: 2022-09-01 編程語言

ASP.NET Core 2.0 中的?WebHost(實現?IWebHost?的基類)是用于為進程提供 HTTP 服務器功能的基礎結構項目,例如,如果正在實現 MVC Web 應用或 Web API 服務。?它提供 ASP.NET Core 中所有新的基礎結構優點,使用戶能夠使用依賴關系注入,在請求管道中插入中間件等,并精確地將這些?IHostedServices?用于后臺任務。

.NET Core 2.1 中引入了?Host(實現?IHost?的基類)。?它能讓用戶擁有與?WebHost相似的基礎結構,使用它我們可以獲取和Asp.net core一樣的框架功能(依賴項注入、日志、配置、托管服務等),如果我們編寫一個服務的時候,它提供了一個非常好用的框架。一個基本的示例代碼如下:?

public static async Task Main(string[] args)
{
    var host = new HostBuilder().Build();
    await host.RunAsync();
}

主要有如下兩個步驟

  • 通過HostBuilder生成一個Host

  • 指向Host的Run函數運行主機

前面的代碼只有一個空環境,要實現依賴項注入、日志、配置、托管服務等功能,還需要進一步的配置,本文的這里就簡單的介紹一下通用主機的配置方法。

系統配置

系統配置有兩個函數ConfigureHostConfiguration和ConfigureAppConfiguration?

hostBuilder.ConfigureHostConfiguration(configHost =>
{
    configHost.SetBasePath(Directory.GetCurrentDirectory());
    configHost.AddJsonFile("hostsettings.json", optional: true);
    configHost.AddEnvironmentVariables(prefix: "PREFIX_");
    configHost.AddCommandLine(args);
});

這兩個函數使用比較類似,它們的關系是主機配置用于初始化 IHostingEnvironment,以供在應用的構建過程中使用。

依賴關系注入

通用主機集成了DI框架,如果要使用DI框架,則需要調用ConfigureServices函數極限依賴關系注入:?

hostBuilder.ConfigureServices((context, services) =>
{
    services.AddScoped<MyService>();
});

配置日志

我們可以通過在ConfigureServices中通過DI框架配置日志系統,但HostBuilder單獨提供了一個配置日志的接口ConfigureLogging:?

hostBuilder.ConfigureLogging((hostContext, configLogging) =>
{
    configLogging.AddConsole();
    configLogging.AddDebug();
});

它內部實際上依然是通過DI框架配置的日志系統。

通用配置

除了通過new一個HostBuilder外,系統還提供了一個創建HostBuilder的方法。

Host.CreateDefaultBuilder()

它的內部也是調用HostBuilder的,但他提供了一般常用的選項,具體包括:

  • 將內容根設置為由?Directory.GetCurrentDirectory?返回的路徑。

  • 通過以下對象加載主機配置:

  • 前綴為?DOTNET_?的環境變量。(例如,DOTNET_ENVIRONMENT)。

  • 命令行參數。

  • 按以下順序加載應用配置:

    • appsettings.json。

    • appsettings.{Environment}.json。

    • 應用在使用入口程序集的?Development?環境中運行時的機密管理器。

    • 環境變量。

    • 命令行參數。

  • 配置控制臺和調試輸出的日志記錄。?日志記錄包含 appsettings.json 或 appsettings.{Environment}.json 文件的日志記錄配置部分中指定的日志篩選規則。

  • 如果應用環境為"開發",請將?ServiceProviderOptions.ValidateScopes?設為?true。?有關詳細信息,請參閱作用域驗證。

也就是說,它基本上提供了我們所常用的大部分功能,并且它返回的也是一個HostBuilder,我們還可以在它的基礎上接著配置,實現我們系統中的特有功能

原文鏈接:https://www.cnblogs.com/TianFang/p/10597604.html

欄目分類
最近更新