Contents

.NET Core 設定測試、正式環境

在設定appsetting.*.json先說明要怎麼設定測試、正式環境。這邊先做個整理。

NetCore 預設環境

預設環境有

  • Development
  • Staging
  • Production

系統上設定環境

要如何設定 Net Core 是正式環境還是測試環境呢?這邊可以設定系統環境變數。

可以更改變數有下面:

  1. DOTNET_ENVIRONMENT
  2. ASPNETCORE_ENVIRONMENT

The ASPNETCORE_ENVIRONMENT value overrides DOTNET_ENVIRONMENT.
這邊會後覆蓋前。ASPNETCORE_ENVIRONMENT覆蓋DOTNET_ENVIRONMENT

更改環境設定需要重啟程式

ASPNETCORE_ENVIRONMENT變數可以設定在執行環境(Runtime Environment)中。可以在環境變數設定ASPNETCORE_ENVIRONMENT,但更改環境變數 VS啟動時,VS需要重啟。

使用 public void Configure(IApplicationBuilder app, IWebHostEnvironment env) 的 IWebHostEnvironment 物件調用環境變數。

env.EnvironmentName()讀出當前環境名稱。

IWebHostEnvironment 介面 (Microsoft.AspNetCore.Hosting) | Microsoft Learn

程式調整客製環境設定

開發中常看到有以下這些環境

  • Development
  • integration
  • testing
  • QA Test
  • staging
  • production

要怎麼知道看 UAT 程式呢?這邊下面會說。

Controller

  1. 一般三種環境判斷
1
2
3
4
5
if( env.IsDevelopment()){
    app.UseDeveloperExceptionPage();
}else if( env.IsStaging() || env.IsProduction() || env.IsEnvironment("QA")){
    app.UseExceptionHandler("/Error");
}
  1. 萬用客製化環境判斷
1
env.IsEnvironment("UAT");

View

1
2
3
4
5
6
7

<environment names="Development,Staging">
    測試環境
</environment>
<environment names="Production">
    正式環境
</environment>
Warning

你使用的時候沒效果,需要注意載入 TagHelpers

1
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

成功的話,滑鼠移過去可以看到提示,如下圖。
https://user-images.githubusercontent.com/6058558/205927277-1b0e6efb-4e60-4c44-9658-9f45930f971c.png

失敗的話,會是這樣。
https://user-images.githubusercontent.com/6058558/205927435-d8b33b63-b51b-483a-a7c0-e1e19b79ad55.png

相關可參考官方文件: ASP.NET Core 中的環境標籤協助程式 | Microsoft Learn

Note

IIS 部署需要注意,環境變數無法套用,IIS 裡面也有設定環境變數檔案。

TODO: 後續再做相關關聯筆記。

Note
這邊特別說一下,這邊環境變數可以設定appsetting.json裡的內容,大小寫沒區分。後續會介紹。

相關文章

彩蛋