ASP.NET Core多環境配置文件問題

前言

在咱們開發的過程當中,每每會有這幾個環境,Dev、QA、Pre和Pro。web

固然不一樣的環境可能你們的叫法會有點不同。shell

最常遇到的問題,或許就是不一樣環境的配置文件問題!json

一個環境一個配置文件是很常見的作法。服務器

在開發的時候,咱們能夠經過修改launchSettings.json來達到不一樣環境的切換。運維

本質是經過ASPNETCORE_ENVIRONMENT這個變量值來完成。ui

可是部署到服務器的時候就須要換個方式來處理這個問題了。 由於發佈後的文件並無launchSettings.json。日誌

這裏簡單介紹兩種方法來處理這個問題。code

方法1

設置系統的環境變量。blog

修改 /etc/profile 文件,添加下面的配置開發

export ASPNETCORE_ENVIRONMENT=QA

再執行source命令,使其生效。

source /etc/profile

執行 dotnet myweb.dll 的時候就能夠看到下面的結果

Hosting environment: QA
Content root path: /var/www/testweb
Now listening on: http://127.0.0.1:47372
Application started. Press Ctrl+C to shut down.

這種作法,雖然能夠完成不一樣環境的切換問題,可是要爲每臺機器設置一個環境變量。

因爲直接是鏡像copy出來的系統,好多系統配置是已經作好標準規範的了,因此這樣作仍是會很麻煩,運維的同窗確定也不肯意每copy一臺機器,都幫你改這個東西。

因此這個方法自已玩玩的機率比較多。

方法2

在啓動程序的時候,添加一個名爲environment的Command-Line參數,同時指定它的值爲對應的環境值。

下面的例子是託管在Jexus時的寫法。

AppHost={
cmd=dotnet /var/www/testweb/myweb.dll --environment QA; 
root=/var/www/testweb;  
port=0;
}

這個時候看到的日誌也是同樣的效果。

Hosting environment: QA
Content root path: /var/www/testweb
Now listening on: http://127.0.0.1:47372
Application started. Press Ctrl+C to shut down.

經過這種方法,可控性看上去比較好,只須要加個參數便可。

若是用方法2須要注意一點:

Program.cs中,不要忘記AddCommandLine。

不過若是用的是WebHost.CreateDefaultBuilder(args)就能夠忽略這一點了。

相關文章
相關標籤/搜索