你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用标签提供每个环境配置值。

许多应用程序需要对不同的环境使用不同的配置。 假设应用程序具有一个配置值,用于定义要用于其后端数据库的终结点。 应用程序开发人员使用与生产中使用的数据库不同的数据库。 应用程序使用的数据库终结点必须更改,因为应用程序从开发转移到生产环境。

在 Azure 应用配置中,可以使用 标签 为同一键定义不同的值。 例如,可以定义具有不同值的单个键进行开发和生产。 可以指定要在连接到应用配置时加载的标签。

为了演示此功能,你将修改在快速入门中创建的 Web 应用 :使用 Azure 应用配置创建 ASP.NET Core 应用 ,以使用不同的配置设置进行开发与生产。 在继续作之前,请完成快速入门。

添加配置值时指定标签

在 Azure 门户中,转到 配置资源管理器 ,找到在快速入门中创建的 TestApp:Settings:FontColor 密钥。 选择其上下文菜单,然后选择 “添加值”。

“添加值”菜单项

“添加值”屏幕上,输入红色值和“开发标签”。 将 内容类型 留空。 选择应用

使用指定的标签加载配置值

默认情况下,Azure 应用配置仅加载没有标签的配置值。 如果已为配置值定义了标签,则需要指定连接到应用配置时要使用的标签。

在上一部分,你为开发环境创建了不同的配置值。 使用 HostingEnvironment.EnvironmentName 变量动态确定应用当前运行的环境。 若要了解详细信息,请参阅 在 ASP.NET Core 中使用多个环境

添加对 Microsoft.Extensions.Configuration.AzureAppConfiguration 命名空间的引用,以便访问 KeyFilterLabelFilter 类。

using Microsoft.Extensions.Configuration.AzureAppConfiguration;

通过将环境名称传递到 Select 方法中,使用与当前环境对应的标签加载配置值:

var builder = WebApplication.CreateBuilder(args);

builder.Configuration.AddAzureAppConfiguration(options =>
    {
        string endpoint = Environment.GetEnvironmentVariable("Endpoint");
        options.Connect(new Uri(endpoint), new DefaultAzureCredential())
               // 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);
    });

该方法 Select 调用两次。 首次加载没有标签的配置值。 然后,它会加载具有与当前环境对应的标签的配置值。 这些特定于环境的值会覆盖任何没有标签的相应值。 无需为每个键定义特定于环境的值。 如果键没有与当前环境对应的标签的值,则它使用不带标签的值。

在不同环境中进行测试

打开 launchSettings.json 目录下 Properties 的文件。 在 config .. 下 profiles查找条目。 在节中 environmentVariables ,将 ASPNETCORE_ENVIRONMENT 变量设置为 Production.

设置新值后,生成并运行应用程序。

dotnet build
dotnet run

使用 Web 浏览器转到 http://localhost:5000。 你会注意到字体颜色为黑色。

使用生产配置运行的 Web 应用程序

更新 launchSettings.json 以将 ASPNETCORE_ENVIRONMENT 变量设置为 Development. 再次运行 dotnet run

你会注意到字体颜色现在为红色。 这是因为应用程序现在使用具有Development标签的值TestApp:Settings:FontColor。 所有其他配置值都与其生产值保持一致。

使用开发配置运行的 Web 应用程序

后续步骤