1. 程式人生 > 程式設計 >ASP.NET Core根據環境變數支援多個 appsettings.json配置檔案

ASP.NET Core根據環境變數支援多個 appsettings.json配置檔案

一、背景

在專案開發的過程當中,開發環境與生產環境的配置肯定是不一樣的。拿個最簡單的例子來說,比如連線字串這種東西,開發環境肯定不能連生產資料庫。在之前的話,這種情況基本靠準備兩個同名的配置檔案來進行處理,然後你在本地就使用本地的配置檔案,生產環境就使用生產環境的配置檔案,十分麻煩。

ASP.NET Core支援利用環境變數來動態配置 JSON 檔案,下面就來看一下如何在專案中使用這樣功能吧。

二、準備工作

ASP.NET Core在應用啟動時讀取環境變數ASPNETCORE_ENVIRONMENT,ASPNETCORE_ENVIRONMENT可以設定任意值,但框架僅支援三個值:Development、Staging和Production,因此我們先在專案中新增appsettings.Development.json、appsettings.Production.json和appsettings.Staging.json以備用。

專案預設生成的appsettings.json用來存放公共配置,當我們設定Development環境時,最終的配置項是appsettings.Development.json和appsettings.json求並集的結果,若兩檔案有同名配置項則以appsettings.Development.json為準,其他環境同理。各json檔案的配置項如下:

/*appsettings.json*/
{
 "UserType": "default","OnlyDefault": "onlyDefault"
}

/*appsettings.Development.json*/
{
{
 "UserType": "development","OnlyDevelopment": "onlyDevelopment"
}

/*appsettings.Production.json*/
{
 "UserType": "production","OnlyProduction": "onlyProduction"
}

/*appsettings.Staging.json*/
{
 "UserType": "staging","OnlyStaging": "onlyStaging"
}

官方說明地址:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/environments?view=aspnetcore-2.1

三、開發時設定環境變數

ASP.NET Core根據環境變數支援多個 appsettings.json配置檔案

ASPNETCORE_ENVIRONMENT設定為Development,那在VS中除錯的時候就會讀取appsettings.Development.json的資料
ASPNETCORE_ENVIRONMENT設定為Production,那在VS中除錯的時候就會讀取appsettings.Production.json的資料

四、釋出後設置環境變數

無論ASPNETCORE_ENVIRONMENT設定為Development、Staging、Production,只要專案中有appsettings.Production.json,那專案釋出後執行時預設會讀取Production的配置。

無論ASPNETCORE_ENVIRONMENT設定為Development、Staging、Production,只要專案中沒有appsettings.Production.json那專案釋出後執行時就會僅讀取appsettings.json的配置。

若想在釋出後動態設定環境變數,可以通過修改web.config的方式來實現,Core專案中預設是沒有web.config檔案的,但是釋出後會生成一個web.config檔案,我們可以通過新增<environmentVariable>節點來設定環境變數:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <location path="." inheritInChildApplications="false">
  <system.webServer>
   <handlers>
    <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
   </handlers>
   <aspNetCore processPath="dotnet" arguments=".\WebCoreTest.Web.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout">
    <environmentVariables>
     <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
    </environmentVariables>
   </aspNetCore>
  </system.webServer>
 </location>
</configuration>
<!--ProjectGuid: 59584515-22df-4551-bfd5-a70baa85af16-->

到此這篇關於ASP.NET Core根據環境變數支援多個 appsettings.json配置檔案的文章就介紹到這了,更多相關ASP.NET Core appsettings.json 內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!