ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 02. Web Host 的默認配置

視頻地址:web

https://www.bilibili.com/video/av38392956/?p=2express

語雀json

https://www.yuque.com/yuejiangliu/dotnet/ixtbmb
ASP.NET Core MVC 02. Web Host 的默認配置
再來看下:CreateWebHostBuilder這個方法

它使用了 WebHost的靜態方法CreateDefaultBuilder,它會返回一個類型叫作IWebHostBuilder,IWebHostBuilder它是一個對象,暫時叫他WebHostBuilder它知道怎麼來設置咱們的WebServer,就是設置咱們WebServr的環境,裏面有一些參數。
CreateDefaultBuilder就是進行了默認的設置,咱們能夠經過這裏寫builder的代碼改變一些默認的設置

首先來看下默認配置有哪些東西

若是安裝了ReSharper能夠把鼠標放在CreateDefaultBuilder上進行反編譯
 

Resharper的配置‘


z這裏就是使用了Kestrel這個web Server




UseIISIntegration():假如說咱們的程序運行於iis服務器後面UseIISIntegration這個方法也就是iis集成 ,容許iis經過windows的平證驗證而後來Kestrel這個web服務器,這點對於構建內網的web應用是很是有用的。內網的用戶都防火牆裏面。因此說他們有時候使用這個
UseIIS():也會啓動dotnet core cli的運行時,而且把這個web引用放在IISworkder process裏面,iisWorker這個進程,要麼是萬w3wp.exe.要麼是iisexpress.exe這種形式就叫作inProcess模型,inProcess模型的性能很是好。與inProcess相對的就是OutOfProcess,使用OutOfProcess能夠轉發給或者叫作代理給Kestrel的web代理服務器
,這種性能沒有inProcess的性能好
源碼再向下拉,看到先使用了UseIIS這個方法,又使用了UseIISIntegration()這個方法

默認配置好作了一些log的設置

仍是這個方法,看到這裏配置了logging


而後又使用萊姆達表達式作了一些配置

它把代碼輸出到了這三個地方windows

logging.AddConsole();
    logging.AddDebug();
    logging.AddEventSourceLogger();

程序運行起來能夠看到在OutPut輸出了日誌

在控制檯運行dotnet run能夠看到也依然輸出了日誌


默認的webHostBuilder英文就是DefaultWebHostBuilder它會建立一個對象,這個對象將實現IConfiguration 接口,咱們能夠在整個asp.net core應用裏訪問這個對象,能夠經過IConfiguration 接口,經過實現了這個接口的對象裏獲取一些咱們須要的配置信息




源碼裏面這就是默認的webHostBuilder,它是new出來的。

咱們再進如這個webHostBuilder看一下。它裏面有個屬性IConfiguration 

在他的構造函數裏 賦值給了這個_config

再進去看這個接口

經過索引字符串就能夠取到配置的值,就是key value的形式的服務器

配置信息能夠從哪裏來


能夠直接使用這個文件配置一些配置信息

看一下源碼 爲何appsettings.json能夠直接被識別出來

也能夠根據環境變量的不一樣附加環境變量的配置文件


把頁面輸出的Hello World字符串移動到配置文件內配置

要把Hello World從配置文件裏面讀取出來

就須要使用到實現了IConfiguration 接口的服務

在這個方法裏請求這實現了IConfiguration 接口的服務,也能夠叫作實現了IConfiguration 接口的對象,爲何我能夠直接在這裏方法調用請求了IConfiguration 接口的對象呢?由於asp.net core使用依賴注入。並且在整個應用全部的地方均可以使用依賴注入

好比說這裏就是依賴注入進來的

原理:當asp,.net core調用這個Configure方法的時候,asp.net core會分析這個方法的幾個參數,Configure方法如今請求了這三個參數,若是能解析這三個參數,那麼就會傳進來實現了該接口的對象或者叫服務進來。
如今asp.net core知道這三個接口,他也知道實現了這三個接口的服務或者叫作對象
app

配置文件數據來自不一樣地方,測試優先級

在系統環境變量變量裏面設置了值

默認取的是系統環境變量的值,系統給環境變量優先級別高


若是是開發環境



先讀上面,再讀下面



系統換將變量時候後加載的,同一個屬性的信息會才用後加載的


最後是命令行的啓動參數


15分39秒
https://www.bilibili.com/video/av38392956/?p=2
  不一樣的數據源,後加載的將會覆蓋前面的數據源的值asp.net

dotnet run Welcome="Hello Form Command line ....."ide

最後加載的是CommandLine因此最終會打印出來函數

 

相關文章
相關標籤/搜索