首頁>技術>

asp.net core內,launchSettings.json提供給開發工具一些引數化,提供開發除錯,appsettings.json(appsettings.Development.json)做發行/開發除錯時配置引數化

launchSettings.json

Properties 資料夾中找到此檔案

1、Visual Studio 或使用.NET Core CLI 執行此 ASP.NET Core 專案時,將使用此檔案中的設定。2、僅用於本地開發環境。3、預設專案的profiles節點下包括 IIS Express 和 專案同名的節點,前者是Visual Studio的IIS Express除錯引數,後者是命令列啟動.net core專案的配置引數可通過配置 profiles/節點/environmentVariables/ASPNETCORE_ENVIRONMENT 實現配置環境變數,通過呼叫IHostingEnvironment.IsEnvironment實現動態區分環境。

IHostingEnvironment.EnvironmentName會預設讀取 ASPNETCORE_ENVIRONMENT 環境變數Startup類的Configure方法預設實現

        public void Configure(IApplicationBuilder app, IHostingEnvironment env)        {            if (env.IsDevelopment())            {                app.UseDeveloperExceptionPage();            }            app.UseMvc();        }

IHostingEnvironment.IsDevelopment是擴充套件方法,實際上是

              public static bool IsDevelopment(this IHostingEnvironment hostingEnvironment)              {                     if (hostingEnvironment == null)                     {                           throw new ArgumentNullException("hostingEnvironment");                     }                     return hostingEnvironment.IsEnvironment(EnvironmentName.Development);              }

IHostingEnvironment.IsEnvironment實際上是擴充套件方法,具體實現如下

              public static bool IsEnvironment(this IHostingEnvironment hostingEnvironment, string environmentName)              {                     if (hostingEnvironment == null)                     {                           throw new ArgumentNullException("hostingEnvironment");                     }                     return string.Equals(hostingEnvironment.EnvironmentName, environmentName, 5);              }

最後,實際上區分執行環境是IHostingEnvironment.EnvironmentName載入ASPNETCORE_ENVIRONMENT 環境變數

擴充套件自定義開發環境

複製launchSettings.json檔案的profiles結構,修改一段自定義啟動配置

    "Debug_Project": {      "commandName": "Project",      "launchBrowser": true,      "launchUrl": "api/values",      "applicationUrl": "http://localhost:5000",      "environmentVariables": {        "ASPNETCORE_ENVIRONMENT": "Debug"      }    }

Visual Studio 下果然出現了Debug_Project除錯啟動項

在Startup類的 新增一段測試程式碼

            if (env.IsEnvironment("Debug"))            {                var before = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");                Console.WriteLine($"{before}");            }

如願打印出了Debug,說明程式啟動除錯時,環境變數ASPNETCORE_ENVIRONMENT的值,如願變成了"Debug"

1、藉助於launchSettings.json,可以在開發除錯環境,區分執行環境,比如載入通過引數,載入不同的 appsettings.json 檔案,比如開發預設的環境變數值 Development 載入配置檔案 appsettings.Development.json,反之則載入 appsettings.json。2、由於區分IHostingEnvironment.EnvironmentName實際上是指向約定的環境變數 ASPNETCORE_ENVIRONMENT ,可以在釋出k8s/docker時,配置環境變數ASPNETCORE_ENVIRONMENT,區分執行環境,做不同的選項載入。

appsettings.json(appsettings.Development.json)

綜上所述,appsettings.json(appsettings.Development.json)的載入,實際上是IHostingEnvironment.EnvironmentName實際上是指向約定的環境變數 ASPNETCORE_ENVIRONMENT,讀出環境環境,是否為Development,成立,則載入配置檔案 appsettings.Development.json,反之則載入配置檔案 appsettings.json

後記

深挖了一下Startup配置檔案載入過程,發現了很多之前遺漏的知識,這也就是這個分享系列的主旨,查漏補缺,一邊寫,一邊查閱資料,梳理如果對於內容有交流和學習的

原文地址:/file/2020/08/25/20200825040057_2.jpg.html

61
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Laravel封裝自帶的上傳圖片及刪除圖片方法