溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ASP.NET Core根據(jù)環(huán)境變量支持多個(gè) appsettings.json配置文件

發(fā)布時(shí)間:2020-09-27 09:44:22 來(lái)源:腳本之家 閱讀:632 作者:changuncle 欄目:開(kāi)發(fā)技術(shù)

一、背景

在項(xiàng)目開(kāi)發(fā)的過(guò)程當(dāng)中,開(kāi)發(fā)環(huán)境與生產(chǎn)環(huán)境的配置肯定是不一樣的。拿個(gè)最簡(jiǎn)單的例子來(lái)說(shuō),比如連接字符串這種東西,開(kāi)發(fā)環(huán)境肯定不能連生產(chǎn)數(shù)據(jù)庫(kù)。在之前的話,這種情況基本靠準(zhǔn)備兩個(gè)同名的配置文件來(lái)進(jìn)行處理,然后你在本地就使用本地的配置文件,生產(chǎn)環(huán)境就使用生產(chǎn)環(huán)境的配置文件,十分麻煩。

ASP.NET Core支持利用環(huán)境變量來(lái)動(dòng)態(tài)配置 JSON 文件,下面就來(lái)看一下如何在項(xiàng)目中使用這樣功能吧。

二、準(zhǔn)備工作

ASP.NET Core在應(yīng)用啟動(dòng)時(shí)讀取環(huán)境變量ASPNETCORE_ENVIRONMENT,ASPNETCORE_ENVIRONMENT可以設(shè)置任意值,但框架僅支持三個(gè)值:Development、Staging 和 Production,因此我們先在項(xiàng)目中添加appsettings.Development.json、appsettings.Production.json和appsettings.Staging.json以備用。

項(xiàng)目默認(rèn)生成的appsettings.json用來(lái)存放公共配置,當(dāng)我們?cè)O(shè)置Development環(huán)境時(shí),最終的配置項(xiàng)是appsettings.Development.json和appsettings.json求并集的結(jié)果,若兩文件有同名配置項(xiàng)則以appsettings.Development.json為準(zhǔn),其他環(huán)境同理。各json文件的配置項(xiàng)如下:

/*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"
}

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

三、開(kāi)發(fā)時(shí)設(shè)置環(huán)境變量

ASP.NET Core根據(jù)環(huán)境變量支持多個(gè) appsettings.json配置文件

 ASPNETCORE_ENVIRONMENT設(shè)置為Development,那在VS中調(diào)試的時(shí)候就會(huì)讀取appsettings.Development.json的數(shù)據(jù)
 ASPNETCORE_ENVIRONMENT設(shè)置為Production,那在VS中調(diào)試的時(shí)候就會(huì)讀取appsettings.Production.json的數(shù)據(jù)

四、發(fā)布后設(shè)置環(huán)境變量

無(wú)論 ASPNETCORE_ENVIRONMENT設(shè)置為Development、Staging、Production,只要項(xiàng)目中有appsettings.Production.json,那項(xiàng)目發(fā)布后運(yùn)行時(shí)默認(rèn)會(huì)讀取Production的配置。

無(wú)論 ASPNETCORE_ENVIRONMENT設(shè)置為Development、Staging、Production,只要項(xiàng)目中沒(méi)有appsettings.Production.json那項(xiàng)目發(fā)布后運(yùn)行時(shí)就會(huì)僅讀取appsettings.json的配置。

若想在發(fā)布后動(dòng)態(tài)設(shè)置環(huán)境變量,可以通過(guò)修改web.config的方式來(lái)實(shí)現(xiàn),Core項(xiàng)目中默認(rèn)是沒(méi)有web.config文件的,但是發(fā)布后會(huì)生成一個(gè)web.config文件,我們可以通過(guò)添加<environmentVariable >節(jié)點(diǎn)來(lái)設(shè)置環(huán)境變量:

<?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-->

到此這篇關(guān)于ASP.NET Core根據(jù)環(huán)境變量支持多個(gè) appsettings.json配置文件的文章就介紹到這了,更多相關(guān)ASP.NET Core appsettings.json 內(nèi)容請(qǐng)搜索億速云以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持億速云!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI