Поделиться через


Используйте метки в целях предоставления значений конфигурации для отдельных сред.

Многим приложениям нужно использовать различные конфигурации для разных сред. Предположим, что у приложения есть значение конфигурации, определяющее строку подключения, которая будет использоваться для его серверной базы данных. Разработчики приложений используют базу данных, которая отличается от используемой в рабочей среде базы данных. Строка подключения к базе данных, используемая приложением, должна изменяться после перемещения приложения из среды разработки в рабочую среду.

В Конфигурации приложений Azure метки можно использовать для определения различных значений одного и того же ключа. Например, можно определить один ключ с различными значениями для среды разработки и рабочей среды. Вы можете указать, какую метку загружать при подключении к Конфигурации приложений Azure.

Чтобы продемонстрировать эту функциональную возможность, вы измените веб-приложение, созданное при помощи статьи Краткое руководство: создание приложения ASP.NET Core с помощью Конфигурации приложений Azure, так, чтобы для среды разработки и рабочей среды применялись различные параметры конфигурации. Перед продолжением работы выполните инструкции из краткого руководства.

Указание метки при добавлении значения конфигурации

На портале Azure перейдите в раздел Обозреватель конфигураций и найдите ключ TestApp:Settings:FontColor, созданный с помощью краткого руководства. Откройте его контекстное меню и щелкните Добавить значение.

Add Value menu item

На экране Добавить значение укажите значение "красный" и метку среды разработки. Поле Тип содержимого оставьте пустым. Выберите Применить.

Загрузка значений конфигурации с указанной меткой

По умолчанию в Конфигурации приложений Azure загружаются только значения конфигурации без метки. Если вы определили метки для значений конфигурации, необходимо указать метки, которые будут использоваться при подключении к Конфигурации приложений 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);
    });

Внимание

В предыдущем фрагменте кода используется средство диспетчера секретов для загрузки строки подключения Конфигурации приложений. Сведения о хранении строки подключения с помощью диспетчера секретов см. в разделе Краткое руководство по Конфигурации приложений Azure с ASP.NET Core.

Метод Select вызывается два раза. В первый раз загружаются значения конфигурации без метки. Затем он загружает значения конфигурации с меткой, соответствующей текущей среде. Эти относящиеся к конкретной среде значения переопределяют все соответствующие значения без метки. Не нужно определять специфические для среды значения для каждого ключа. Если у ключа нет значения с меткой, соответствующей текущей среде, в методе используется значение без метки.

Тестирование в различных средах

Откройте файл launchSettings.json, расположенный в каталоге Properties. Найдите запись config в разделе profiles. В разделе environmentVariables присвойте переменной ASPNETCORE_ENVIRONMENT значение Production.

После задания новых значений скомпилируйте и запустите приложение.

dotnet build
dotnet run

В веб-браузере перейдите по адресу http://localhost:5000. Обратите внимание, что цвет шрифта — черный.

Web application running with production configuration

Обновите launchSettings.json, чтобы присвоить переменной ASPNETCORE_ENVIRONMENT значение Development. Еще раз запустите dotnet run.

Обратите внимание, что цвет шрифта теперь стал красным. Это связано с тем, что приложение теперь использует значение TestApp:Settings:FontColor с меткой Development. Все остальные значения конфигурации остаются теми же, что и значения для рабочей среды.

Web application running with development configuration

Следующие шаги