ASP.NET Core引進了在多種環境中對控制應用程序行爲的進一步支持,例如開發環境(Development Environment)、預發佈環境(Staging Environment),和生產環境(Production Environment)。環境變量(ASPNETCORE_ENVIRONMENT)被用來指示程序在哪一個環境中運行,容許程序被正確的配置。json
1、運行環境 安全
開發環境(Development):當開發程序時使用。測試
預發佈環境(Staging):按照慣例,Staging環境是預生產環境,用於發佈到產品環境前的最終測試。spa
產品環境(Production):是正在運行並被終端用戶使用的環境。這個環境應該配置成最大程度的安全、高效和魯棒性。blog
2、環境變量(ASPNETCORE_ENVIRONMENT)開發
ASP.NET Core使用一個特殊的環境變量——ASPNETCORE_ENVIRONMEN來描述應用程序當前運行的環境。這個變量能夠設置成你任何喜歡的值,但約定俗成使用這三個值:Development、Staging和Production。你將在ASP.NET Core提供的樣例和模版中找到這些值。文檔
在Windows和macOS中,環境變量名是大小寫不敏感的。無論你是把它設置成Development,或者是development,或者是DEVELOPMENT,結果都同樣。然而在默認狀況下,Linux是大小寫敏感的。出於最佳實踐的考慮,環境變量、文件名和設置(Setting)應該假定爲大小寫敏感。get
3、設置環境變量產品
關於在不一樣環境時,如何設置環境變量,可參考微軟的官方文檔:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/environments#setting-the-environmentit
在開發時,咱們能夠在Visual Studio的設置頁中直接修改環境變量(以下圖所示),不須要修改系統中的設置。
這個屬性頁中的設置會被持久化存儲到launchSettings.json這個文件中。這個文件位於項目的Properties文件夾下面。
4、根據不一樣的環境加載不一樣的Startup類
在上篇中提到程序的主方法中使用到UseStartup<TStartup>()這個方法。這個方法有多個重載,除了能夠加載指定的Startup類外,還能夠在指定的程序集中根據當前程序運行環境搜索特定的Startup類。搜索規則爲尋找名字爲"Startup{EnvironmentName}"。例如,當前程序在開發環境中運行時,這個方法就會在你指定的程序集中查找名爲"StartupDevelopment"的類。
ASP.NET Core還支持這樣的狀況:當你在使用UseStartup<TStartup>()指定了一個固定的Startup類後,它還能夠根據當前程序運行環境,加載Startup類中以這種格式 "Configure{EnvironmentName}"命名的方法。舉個例子,若是程序當前的執行環境是Staging環境,就會調用在Startup類中的ConfigureStaging方法,而再也不調用Configure方法。
5、總結
Startup的使用比較靈活,能夠把開發、測試、生產獨立的環境獨立開來,能夠在實際中運用起來。
6、參考
https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/environments