ASP.NET Core(十)Configuration 配置優先順序詳解
ASP.NET Core 專案啟動,預設執行順序為:宿主 Host -> 讀取配置 -> 日誌設定 -> 註冊服務(DI)-> 新增中介軟體 -> WebHost 監聽 -> 後臺 Work 啟動。 Host.CreateDefaultBuilder 方法中,按照以下順序為應用提供預設配置:
原始碼如下:
原始碼地址:https://github.com/dotnet/extensions/blob/release/3.1/src/Hosting/Hosting/src/Host.cs 通過程式碼可以看出,程式獲取配置優先順序依次為:appsettings.json -> appsettings.環境.json -> 環境變數 -> 命令列引數。我們根據優先順序進行測試。
首先,appsettings.json 配置檔案,如下:
新建 appsettings.Test.json 配置,如下:
嘗試啟動專案,檢視 WebConfig:Name 和 WebConfig:Date 的配置,如下圖: 找到 Properties -> launchSettings.json 檔案,修改 ASPNETCORE_ENVIRONMENT 環境配置為 Test,如下:
這時程式會讀取 appsettings.Test.json 的配置,嘗試重新啟動專案,發現 WebConfig:Name 已經覆蓋了,如下圖: 再次修改 launchSettings.json 檔案,通過環境變數設定 WebConfig:Name 的值,程式碼如下:
備註:環境變數修改 WebConfig:Name 的值,變數名稱為: WebConfig__Name (中間用雙下劃線隔開) 嘗試通過命令列的形式修改預設配置的值,啟動命令如下:
如下圖: 用實踐來測試配置鍵值的優先順序,完。 |