在咱們開發的過程當中,每每會有這幾個環境,Dev、QA、Pre和Pro。web
固然不一樣的環境可能你們的叫法會有點不同。shell
最常遇到的問題,或許就是不一樣環境的配置文件問題!json
一個環境一個配置文件是很常見的作法。服務器
在開發的時候,咱們能夠經過修改launchSettings.json來達到不一樣環境的切換。運維
本質是經過ASPNETCORE_ENVIRONMENT這個變量值來完成。ui
可是部署到服務器的時候就須要換個方式來處理這個問題了。 由於發佈後的文件並無launchSettings.json。日誌
這裏簡單介紹兩種方法來處理這個問題。code
設置系統的環境變量。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一臺機器,都幫你改這個東西。
因此這個方法自已玩玩的機率比較多。
在啓動程序的時候,添加一個名爲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)
就能夠忽略這一點了。