使用標籤提供各環境組態值。
許多應用程式需針對不同的環境使用不同的組態。 假設,應用程式具有組態值,並可定義要用於其後端資料庫的連接字串。 應用程式開發人員使用的資料庫不同於生產環境使用的資料庫。 所以當應用程式從開發移至生產環境時,就必須變更應用程式使用的資料庫連接字串。
在 Azure 應用程式組態中,您可以使用標籤為相同金鑰定義的不同值。 例如,您可以針對開發和生產,定義具有不同值的單一金鑰。 您可以指定連線至應用程式組態時要載入的標籤。
為了示範這項功能,您將修改在快速入門:使用 Azure 應用程式組態建立具有 ASP.NET Core 應用程式中建立的 Web 應用程式,以針對開發與生產環境使用不同的組態設定。 請先完成快速入門在接著繼續。
新增組態值時,請指定標籤
在 Azure 入口網站中,前往 [組態總管],然後尋找您在快速入門中建立的 TestApp:Settings:FontColo 金鑰。 選取其捷徑功能表,然後選取 [新增值]。
在 [新增值] 畫面上,輸入紅色的值,以及開發的標籤。 使內容類型留白。 選取套用。
使用指定標籤載入組態值
根據預設,Azure 應用程式組態只會載入沒有標籤的組態值。 如果您已為組態值定義標籤,您會想要指定連線至應用程式組態時要用的標籤。
在上一節中,您已為開發環境建立不同的組態值。 您使用 HostingEnvironment.EnvironmentName
變數來動態判斷目前執行應用程式的環境。 如需詳細資訊,請參閱在 ASP.NET Core 中使用多個環境。
在 Microsoft.Extensions.Configuration.AzureAppConfiguration 命名空間的新增參考,以存取 KeyFilter 和 LabelFilter 類別。
using Microsoft.Extensions.Configuration.AzureAppConfiguration;
透過將環境名稱傳遞至 Select
方法,利用對應至目前環境的標籤載入組態值:
var builder = WebApplication.CreateBuilder(args);
builder.Configuration.AddAzureAppConfiguration(options =>
{
options.Connect(builder.Configuration.GetConnectionString("AppConfig"))
// Load configuration values with no label
.Select(KeyFilter.Any, LabelFilter.Null)
// Override with any configuration values specific to current hosting env
.Select(KeyFilter.Any, builder.Environment.EnvironmentName);
});
重要
上述程式碼片段會使用祕密管理員工具來載入應用程式組態連接字串。 如需使用祕密管理員儲存連接字串的資訊,請參閱搭配 ASP.NET Core 的 Azure 應用程式組態快速入門。
呼叫 Select
方法兩次。 第一次,會載入沒有標籤的組態值。 接著,會利用對應至目前環境的標籤來載入組態值。 這些專屬於環境的值會覆寫任何沒有標籤的對應值。 您不需為每個金鑰定義專屬於環境的值。 如果一個金鑰沒有對應至目前環境的標籤值,則會使用沒有標籤的值。
在不同的環境中測試
開啟 Properties
目錄下的 launchSettings.json
檔案。 尋找 profiles
下的 config
項目。 在 environmentVariables
區段中,將 ASPNETCORE_ENVIRONMENT
變數設定為 Production
。
設定完新的值後,建置並執行您的應用程式。
dotnet build
dotnet run
使用您的網頁瀏覽器前往 http://localhost:5000
。 您會發現字型色彩為黑色。
更新 launchSettings.json
來將 ASPNETCORE_ENVIRONMENT
變數設定為 Development
。 請再次執行 dotnet run
。
您會發現字型色彩現在是紅色。 這是因為應用程式正在使用具有 Development
標籤的 TestApp:Settings:FontColor
值。 所有其他組態值將維持與其實際生產值相同的狀態。