ASP.NET Core根據(jù)環(huán)境變量支持多個 appsettings.json配置文件
一、背景
在項(xiàng)目開發(fā)的過程當(dāng)中,開發(fā)環(huán)境與生產(chǎn)環(huán)境的配置肯定是不一樣的。拿個最簡單的例子來說,比如連接字符串這種東西,開發(fā)環(huán)境肯定不能連生產(chǎn)數(shù)據(jù)庫。在之前的話,這種情況基本靠準(zhǔn)備兩個同名的配置文件來進(jìn)行處理,然后你在本地就使用本地的配置文件,生產(chǎn)環(huán)境就使用生產(chǎn)環(huán)境的配置文件,十分麻煩。
ASP.NET Core支持利用環(huán)境變量來動態(tài)配置 JSON 文件,下面就來看一下如何在項(xiàng)目中使用這樣功能吧。
二、準(zhǔn)備工作
ASP.NET Core在應(yīng)用啟動時讀取環(huán)境變量ASPNETCORE_ENVIRONMENT,ASPNETCORE_ENVIRONMENT可以設(shè)置任意值,但框架僅支持三個值:Development、Staging 和 Production,因此我們先在項(xiàng)目中添加appsettings.Development.json、appsettings.Production.json和appsettings.Staging.json以備用。
項(xiàng)目默認(rèn)生成的appsettings.json用來存放公共配置,當(dāng)我們設(shè)置Development環(huán)境時,最終的配置項(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" }
官方說明地址:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/environments?view=aspnetcore-2.1
三、開發(fā)時設(shè)置環(huán)境變量
ASPNETCORE_ENVIRONMENT設(shè)置為Development,那在VS中調(diào)試的時候就會讀取appsettings.Development.json的數(shù)據(jù)
ASPNETCORE_ENVIRONMENT設(shè)置為Production,那在VS中調(diào)試的時候就會讀取appsettings.Production.json的數(shù)據(jù)
四、發(fā)布后設(shè)置環(huán)境變量
無論 ASPNETCORE_ENVIRONMENT設(shè)置為Development、Staging、Production,只要項(xiàng)目中有appsettings.Production.json,那項(xiàng)目發(fā)布后運(yùn)行時默認(rèn)會讀取Production的配置。
無論 ASPNETCORE_ENVIRONMENT設(shè)置為Development、Staging、Production,只要項(xiàng)目中沒有appsettings.Production.json那項(xiàng)目發(fā)布后運(yùn)行時就會僅讀取appsettings.json的配置。
若想在發(fā)布后動態(tài)設(shè)置環(huán)境變量,可以通過修改web.config的方式來實(shí)現(xiàn),Core項(xiàng)目中默認(rèn)是沒有web.config文件的,但是發(fā)布后會生成一個web.config文件,我們可以通過添加<environmentVariable >節(jié)點(diǎn)來設(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)境變量支持多個 appsettings.json配置文件的文章就介紹到這了,更多相關(guān)ASP.NET Core appsettings.json 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
自動類型安全的REST.NET標(biāo)準(zhǔn)庫refit
這篇文章介紹了自動類型安全的REST.NET標(biāo)準(zhǔn)庫refit,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-04-04.Net Core3 用Windows 桌面應(yīng)用開發(fā)Asp.Net Core網(wǎng)站
這篇文章主要介紹了.Net Core3 用Windows 桌面應(yīng)用開發(fā)Asp.Net Core網(wǎng)站,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01asp.net 計算字符串中各個字符串出現(xiàn)的次數(shù)
比如一個字符串"a,b,a,c,b,b,d",現(xiàn)在我們要統(tǒng)計每個字符串出現(xiàn)次數(shù)。解決這個問題,我們可以使用泛型集合 Dictionary(TKey,TValue)。它有一個key值用來存儲字符串和一個value值,用來存儲字符串出現(xiàn)的次數(shù)2012-05-05VS2017 Cordova Ionic2 移動開發(fā)環(huán)境搭建教程
這篇文章主要為大家詳細(xì)介紹了VS2017 Cordova Ionic2 移動開發(fā)環(huán)境搭建教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04ASP.NET MVC 中實(shí)現(xiàn)基于角色的權(quán)限控制的處理方法
在ASP.NET MVC中,通過使用其所提供的內(nèi)置2013-03-03asp.net網(wǎng)站實(shí)現(xiàn)接入QQ登錄示例代碼
相信大家在做開發(fā)的時候,常會遇到集成QQ登錄的功能,本文主要說的是利用asp.net代碼的實(shí)現(xiàn)方式,邏輯部分主要還是根據(jù)幫助文檔來的。不懂的同學(xué)可以先看看文檔。下面來一起學(xué)習(xí)學(xué)習(xí)。2016-08-08Linux上使用Docker部署ASP.NET?Core應(yīng)用程序
這篇文章介紹了使用Docker部署ASP.NET?Core應(yīng)用程序的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03