Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Данные из Конфигурации приложений можно загрузить как параметры приложения в .NET Framework. Дополнительные сведения см. в кратком руководстве. Однако, как разработано в .NET Framework, параметры приложения могут обновляться только после перезапуска приложения. Поставщик Конфигурации приложений .NET — это библиотека .NET Standard. Она поддерживает динамическое кэширование и обновление конфигурации без перезапуска приложения. Из этого учебника вы узнаете, как реализовать динамические обновления конфигурации в консольном приложении.NET Framework.
В этом руководстве описано следующее:
- Настройте приложение .NET Framework для обновления конфигурации в ответ на изменения в хранилище конфигурации приложений.
- внедрение последней конфигурации в приложение.
Предварительные условия
- Учетная запись Azure с активной подпиской. Создайте ее бесплатно.
- Хранилище конфигураций приложения. Создайте хранилище.
- Visual Studio
- платформа .NET Framework 4.7.2 или более поздней версии
Добавление ключа-значения
Добавьте следующее ключевое значение в хранилище Конфигурация приложений и оставьте метку и тип контента со значениями по умолчанию. Дополнительные сведения о добавлении значений ключей в хранилище с помощью портал Azure или ИНТЕРФЕЙСА командной строки см. в разделе "Создание значения ключа".
Ключ | Значение |
---|---|
TestApp:Settings:Message | Данные из Конфигурации приложений Azure |
Создание консольного приложения .NET Framework
Откройте Visual Studio и выберите Создать проект.
В разделе Создание проекта с помощью фильтра найдите тип проекта Консоль и щелкните Консольное приложение (.NET Framework) с C# из списка шаблонов проекта. Нажмите кнопку Далее.
В окне Настроить новый проект введите имя проекта. В разделе Платформа выберите .NET Framework 4.7.2 или более позднюю версию. Щелкните Создать.
Перезагрузка данных из App Configuration
Щелкните проект правой кнопкой мыши и выберите Управление пакетами NuGet. На вкладке Обзор найдите и добавьте в проект последнюю версию следующих пакетов NuGet.
- Microsoft.Extensions.Configuration.AzureAppConfiguration
- Azure.Identity
Откройте файл Program.cs и добавьте следующие пространства имен.
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.AzureAppConfiguration; using Azure.Identity;
Добавьте две переменные для хранения объектов, связанных с конфигурацией.
private static IConfiguration _configuration; private static IConfigurationRefresher _refresher;
Обновите метод
Main
, чтобы подключиться к Конфигурации приложений с помощью указанных параметров обновления. Подключение к Конфигурации приложения с использованием Microsoft Entra ID (рекомендуется) или строки подключения.Вы используете
DefaultAzureCredential
для аутентификации в хранилище конфигурации приложений. Следуйте инструкциям, чтобы назначить учетным данным роль Чтения данных конфигурации приложений. Перед запуском приложения обязательно предоставьте достаточно времени для распространения разрешения.// Existing code in Program.cs // ... ... static void Main(string[] args) { var builder = new ConfigurationBuilder(); builder.AddAzureAppConfiguration(options => { string endpoint = Environment.GetEnvironmentVariable("Endpoint"); options.Connect(new Uri(endpoint), new DefaultAzureCredential()) // Load all keys that start with `TestApp:` and have no label. .Select("TestApp:*") // Reload configuration if any selected key-values have changed. .ConfigureRefresh(refresh => { refresh.RegisterAll() .SetRefreshInterval(TimeSpan.FromSeconds(10)); }); _refresher = options.GetRefresher(); }); _configuration = builder.Build(); PrintMessage().Wait(); } // The rest of existing code in Program.cs // ... ...
Внутри метода
ConfigureRefresh
вы вызываете методRegisterAll
, чтобы указать поставщику App Configuration перезагрузить всю конфигурацию при обнаружении изменений в любом из выбранных ключевых значений (начиная с TestApp: и без ярлыка). Дополнительные сведения об изменениях конфигурации мониторинга см. в рекомендациях по обновлению конфигурации.Метод
SetRefreshInterval
указывает минимальное время, которое должно пройти, прежде чем будет выполнен новый запрос в службу "Конфигурация приложений" для проверки на наличие каких-либо изменений конфигурации. В этом примере с целью демонстрации вы переопределяете срок действия по умолчанию (30 секунд), устанавливая 10-секундный интервал.Добавьте метод с именем
PrintMessage()
, который запускает обновление данных конфигурации из Конфигурации приложений.private static async Task PrintMessage() { Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!"); // Wait for the user to press Enter Console.ReadLine(); await _refresher.TryRefreshAsync(); Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!"); }
Вызов одного метода
ConfigureRefresh
не приведет к автоматическому обновлению конфигурации. Для активации обновления необходимо вызвать методTryRefreshAsync
из интерфейсаIConfigurationRefresher
. Это позволяет избежать запросов, отправленных в Конфигурация приложений даже если приложение неактивно. Вы можете включить вызовTryRefreshAsync
, в котором вы считаете, что ваше приложение активно. Например, при обработке входящего сообщения, заказа или итерации сложной задачи. Она также может выполняться по таймеру, если ваше приложение активно все время. В этом примере вы вызываетеTryRefreshAsync
при нажатии клавиши ВВОД. Обратите внимание, что даже в случае сбоя вызоваTryRefreshAsync
по какой-либо причине ваше приложение продолжит использовать кэшированную конфигурацию. Еще одна попытка будет выполнена после окончания настроенного интервала обновления, и вызовTryRefreshAsync
будет активирован вашим приложением снова. ВызовTryRefreshAsync
— это no-op до истечения заданного интервала обновления, поэтому его влияние на производительность минимально, даже если оно часто вызывается.
Создание и запуск приложения локально
Задайте переменную среды.
Задайте переменную среды с именем
Endpoint
, указывающую на конечную точку вашего хранилища конфигурации приложений, которое можно найти в разделе Обзор на портале Azure.Если вы используете командную строку Windows, выполните следующую команду и перезапустите командную строку, чтобы изменения вступили в силу:
setx Endpoint "<endpoint-of-your-app-configuration-store>"
Если вы используете PowerShell, выполните следующую команду:
$Env:Endpoint = "<endpoint-of-your-app-configuration-store>"
Если вы используете macOS или Linux, выполните следующую команду:
export Endpoint='<endpoint-of-your-app-configuration-store>'
Перезапустите Visual Studio, чтобы изменение вступило в силу.
Нажмите клавиши CTRL+F5, чтобы скомпилировать и запустить консольное приложение.
На портале Azure перейдите в обозреватель конфигураций хранилища Конфигурации приложений и обновите значение следующего ключа.
Ключ Значение TestApp:Settings:Message Данные из Конфигурация приложений Azure — обновлены Вернувшись в запущенное приложение, нажмите клавишу Enter, чтобы запустить обновление и вывести обновленное значение в окне командной строки или PowerShell.
Примечание.
Так как интервал обновления был установлен на 10 секунд с помощью
SetRefreshInterval
метода при указании конфигурации для операции обновления, значение параметра конфигурации будет обновлено только в том случае, если с момента последнего обновления этого параметра прошло не менее 10 секунд.
Очистка ресурсов
Если вы не планируете в дальнейшем использовать ресурсы, созданные при работе с этой статьей, удалите созданную группу ресурсов, чтобы избежать расходов.
Внимание
Удаление группы ресурсов — процесс необратимый. Группа ресурсов и все содержащиеся в ней ресурсы удаляются без возможности восстановления. Будьте внимательны, чтобы случайно не удалить не те ресурсы или группу ресурсов. Если ресурсы для работы с этой статьей созданы в группе ресурсов, которая содержит другие нужные ресурсы, удалите каждый ресурс отдельно в соответствующей области ресурса, чтобы не удалять группу ресурсов.
- Войдите на портал Azure и выберитеГруппы ресурсов.
- Введите имя группы ресурсов в поле Фильтровать по имени.
- В списке результатов выберите имя группы ресурсов, чтобы просмотреть общие сведения.
- Выберите команду Удалить группу ресурсов.
- Подтвердите операцию удаления группы ресурсов. Введите имя группы ресурсов, которую необходимо удалить, и нажмите Удалить.
Через некоторое время группа ресурсов и все ее ресурсы будут удалены.
Следующие шаги
В рамках этого учебника вы включили в приложении .NET Framework динамическое обновление параметров конфигурации из службы "Конфигурация приложения". Чтобы узнать, как включить динамическую конфигурацию в веб-приложении ASP.NET (.NET Framework), перейдите к следующему учебнику:
Чтобы узнать, как с помощью удостоверения, управляемого Azure, упростить доступ к Конфигурации приложений Azure, перейдите к следующему учебнику: