ASP.NET Core 基礎知識--環境變量,不同環境自動採用不同配置文件

在一個項目當中,我們經常會有很多不同的環境的參數需要配置,比如

以登錄cookie要寫的domain爲例吧
開發環境的配置:一般是localhost

測試環境:內部解析的測試域名

UAT用戶驗收測試環境:一般是生產環境上解析的一個域名,環境與生產環境基本一致。

生產環境:正式環境,對外運營使用的域名。

每種環境的域名都不一樣,在代碼中,我們如何去選定某個環境應該使用哪個配置文件呢?

下面直接上例子

我們appsetting.js配置文件,是可以設置不同環境下對應的文件的。

比如 我們創建一個MVC項目,默認有appsettings.json和appsettings.Development.json 兩個配置文件

我們也可以按照格式自定義,比如通常生產環境下的配置文件名爲:appsettings.Development.json

它就是以appsettings.XXX.json 爲命名格式即可。XXX就是與我們環境名稱對應的。

比如在生產環境下,我們一般定位爲 appsetttings.Production.json ,其中Production 就是對應我們的環境名稱。

 

下面是重點,文件跟變量名稱怎麼結合起來呢????

這就涉及到在項目中如何配置環境變量

比如在本機:

vs,項目右鍵--屬性--調試

 

默認就是Development(開發環境)

那我們經常只在appsetting.json中寫配置而已,爲啥還能正確獲取呢?

這是讀取配置文件的一個機制,當指定的環境沒有這個變量時,就到appsetting.json中讀取,若指定環境的配置文件有對應變量了,它就不會再讀取appsetting.json中的配置了。

也就是一個優先級問題,appsetting.json的優先級最低。在生產環境下也一樣。

那我們爲啥不都直接寫在appsetting.json中就好了呢,其實就是我們上面講的,一個環境對應一個配置文件,部署的時候,我們就不用再次修改配置。

那如果部署在IIS上,我們如何設置IIS對應的環境呢

我們發佈後有個文件web.config,打開

 

 

將它修改爲我們想要的環境即可。

同樣的,在linux下我們也可以這麼改。

但一般部署到linux 下,我們會寫入到系統服務,方便自動啓動和利用服務來控制項目啓動、停止以及運行狀態。

linux下的服務命名可以參考我的另一篇文章:https://www.cnblogs.com/fei686868/p/11234609.html

 

 

 

這樣,我們項目中就可以根據環境的情況,定義不同環境下的環境變量。

部署的時候,設置對應的環境名稱,即可自動讀取對應的環境變量了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章