ASP.NET?Core通用主機(jī)的系統(tǒng)配置
ASP.NET Core 2.0 中的 WebHost(實(shí)現(xiàn) IWebHost 的基類)是用于為進(jìn)程提供 HTTP 服務(wù)器功能的基礎(chǔ)結(jié)構(gòu)項(xiàng)目,例如,如果正在實(shí)現(xiàn) MVC Web 應(yīng)用或 Web API 服務(wù)。 它提供 ASP.NET Core 中所有新的基礎(chǔ)結(jié)構(gòu)優(yōu)點(diǎn),使用戶能夠使用依賴關(guān)系注入,在請求管道中插入中間件等,并精確地將這些 IHostedServices 用于后臺任務(wù)。
.NET Core 2.1 中引入了 Host(實(shí)現(xiàn) IHost 的基類)。 它能讓用戶擁有與 WebHost相似的基礎(chǔ)結(jié)構(gòu),使用它我們可以獲取和Asp.net core一樣的框架功能(依賴項(xiàng)注入、日志、配置、托管服務(wù)等),如果我們編寫一個(gè)服務(wù)的時(shí)候,它提供了一個(gè)非常好用的框架。一個(gè)基本的示例代碼如下:
public static async Task Main(string[] args) { var host = new HostBuilder().Build(); await host.RunAsync(); }
主要有如下兩個(gè)步驟
通過HostBuilder生成一個(gè)Host
指向Host的Run函數(shù)運(yùn)行主機(jī)
前面的代碼只有一個(gè)空環(huán)境,要實(shí)現(xiàn)依賴項(xiàng)注入、日志、配置、托管服務(wù)等功能,還需要進(jìn)一步的配置,本文的這里就簡單的介紹一下通用主機(jī)的配置方法。
系統(tǒng)配置
系統(tǒng)配置有兩個(gè)函數(shù)ConfigureHostConfiguration和ConfigureAppConfiguration
hostBuilder.ConfigureHostConfiguration(configHost => { configHost.SetBasePath(Directory.GetCurrentDirectory()); configHost.AddJsonFile("hostsettings.json", optional: true); configHost.AddEnvironmentVariables(prefix: "PREFIX_"); configHost.AddCommandLine(args); });
這兩個(gè)函數(shù)使用比較類似,它們的關(guān)系是主機(jī)配置用于初始化 IHostingEnvironment,以供在應(yīng)用的構(gòu)建過程中使用。
依賴關(guān)系注入
通用主機(jī)集成了DI框架,如果要使用DI框架,則需要調(diào)用ConfigureServices函數(shù)極限依賴關(guān)系注入:
hostBuilder.ConfigureServices((context, services) => { services.AddScoped<MyService>(); });
配置日志
我們可以通過在ConfigureServices中通過DI框架配置日志系統(tǒng),但HostBuilder單獨(dú)提供了一個(gè)配置日志的接口ConfigureLogging:
hostBuilder.ConfigureLogging((hostContext, configLogging) => { configLogging.AddConsole(); configLogging.AddDebug(); });
它內(nèi)部實(shí)際上依然是通過DI框架配置的日志系統(tǒng)。
通用配置
除了通過new一個(gè)HostBuilder外,系統(tǒng)還提供了一個(gè)創(chuàng)建HostBuilder的方法。
Host.CreateDefaultBuilder()
它的內(nèi)部也是調(diào)用HostBuilder的,但他提供了一般常用的選項(xiàng),具體包括:
將內(nèi)容根設(shè)置為由 Directory.GetCurrentDirectory 返回的路徑。
通過以下對象加載主機(jī)配置:
前綴為 DOTNET_ 的環(huán)境變量。(例如,DOTNET_ENVIRONMENT)。
命令行參數(shù)。
按以下順序加載應(yīng)用配置:
appsettings.json。
appsettings.{Environment}.json。
應(yīng)用在使用入口程序集的 Development 環(huán)境中運(yùn)行時(shí)的機(jī)密管理器。
環(huán)境變量。
命令行參數(shù)。
配置控制臺和調(diào)試輸出的日志記錄。 日志記錄包含 appsettings.json 或 appsettings.{Environment}.json 文件的日志記錄配置部分中指定的日志篩選規(guī)則。
如果應(yīng)用環(huán)境為"開發(fā)",請將 ServiceProviderOptions.ValidateScopes 設(shè)為 true。 有關(guān)詳細(xì)信息,請參閱作用域驗(yàn)證。
也就是說,它基本上提供了我們所常用的大部分功能,并且它返回的也是一個(gè)HostBuilder,我們還可以在它的基礎(chǔ)上接著配置,實(shí)現(xiàn)我們系統(tǒng)中的特有功能
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
MVC+EasyUI+三層新聞網(wǎng)站建立 tabs標(biāo)簽制作方法(六)
這篇文章主要為大家詳細(xì)介紹了MVC+EasyUI+三層新聞網(wǎng)站建立的第六篇,教大家如何制作tabs標(biāo)簽,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07深入淺析ASP在線壓縮access數(shù)據(jù)庫的方法
這篇文章主要介紹了ASP在線壓縮access數(shù)據(jù)庫的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09asp.net gridview實(shí)現(xiàn)全選,反選與刪除記錄的操作代碼
asp.net gridview實(shí)現(xiàn)全選,反選與刪除記錄的操作代碼,需要的朋友可以參考下。2011-07-07asp.net 結(jié)合mysql存儲過程進(jìn)行分頁代碼
最近用mysql + asp.net來寫網(wǎng)站,既然mysql已經(jīng)支持存儲過程了,那么像分頁這么常用的東西,當(dāng)然要用存儲過程啦2008-11-11ASP.NET?MVC實(shí)現(xiàn)區(qū)域或城市選擇
這篇文章介紹了ASP.NET?MVC實(shí)現(xiàn)區(qū)域或城市選擇的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08Asp.Mvc?2.0實(shí)現(xiàn)用戶注冊實(shí)例講解(1)
這篇文章主要介紹了Asp.Mvc?2.0如何實(shí)現(xiàn)用戶注冊,實(shí)例講解很細(xì)致,注冊功能是每個(gè)網(wǎng)站必不可少的組成部分,感興趣的的朋友可以參考下2015-08-08