Используйте метки в целях предоставления значений конфигурации для отдельных сред.
Многим приложениям нужно использовать различные конфигурации для разных сред. Предположим, что у приложения есть значение конфигурации, определяющее строку подключения, которая будет использоваться для его серверной базы данных. Разработчики приложений используют базу данных, которая отличается от используемой в рабочей среде базы данных. Строка подключения к базе данных, используемая приложением, должна изменяться после перемещения приложения из среды разработки в рабочую среду.
В Конфигурации приложений Azure метки можно использовать для определения различных значений одного и того же ключа. Например, можно определить один ключ с различными значениями для среды разработки и рабочей среды. Вы можете указать, какую метку загружать при подключении к Конфигурации приложений Azure.
Чтобы продемонстрировать эту функциональную возможность, вы измените веб-приложение, созданное при помощи статьи Краткое руководство: создание приложения ASP.NET Core с помощью Конфигурации приложений Azure, так, чтобы для среды разработки и рабочей среды применялись различные параметры конфигурации. Перед продолжением работы выполните инструкции из краткого руководства.
Указание метки при добавлении значения конфигурации
На портале Azure перейдите в раздел Обозреватель конфигураций и найдите ключ TestApp:Settings:FontColor, созданный с помощью краткого руководства. Откройте его контекстное меню и щелкните Добавить значение.
На экране Добавить значение укажите значение "красный" и метку среды разработки. Поле Тип содержимого оставьте пустым. Выберите Применить.
Загрузка значений конфигурации с указанной меткой
По умолчанию в Конфигурации приложений 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
. Обратите внимание, что цвет шрифта — черный.
Обновите launchSettings.json
, чтобы присвоить переменной ASPNETCORE_ENVIRONMENT
значение Development
. Еще раз запустите dotnet run
.
Обратите внимание, что цвет шрифта теперь стал красным. Это связано с тем, что приложение теперь использует значение TestApp:Settings:FontColor
с меткой Development
. Все остальные значения конфигурации остаются теми же, что и значения для рабочей среды.