Краткое руководство: создание приложения ASP.NET Core с помощью Azure App Configuration
10.12.2024
В этом кратком руководстве вы будете использовать службу конфигурации приложений Azure для выноса на внешний ресурс хранения и управления настройками вашего приложения для приложения ASP.NET Core. ASP.NET Core создает один объект конфигурации на основе ключа с использованием параметров от одного или нескольких поставщиков конфигурации. Конфигурация приложений предоставляет библиотеку поставщика конфигурации .NET. Таким образом, вы можете использовать Конфигурация приложений в качестве дополнительного источника конфигурации для приложения. Если у вас есть существующее приложение, чтобы начать использовать Конфигурация приложений, вам потребуется лишь несколько небольших изменений в коде запуска приложения.
Azure Cloud Shell — это бесплатная интерактивная оболочка, с помощью которой можно выполнять инструкции командной строки, описанные в этой статье. В ней есть стандартные средства Azure, включая пакет SDK для .NET. Если вы вошли в подписку Azure, запустите Azure Cloud Shell на сайте shell.azure.com. Дополнительные сведения об Azure Cloud Shell см. в нашей документации
Добавление ключевых значений
Добавьте следующие ключевые значения в хранилище Конфигурация приложений и оставьте метку и тип контента со значениями по умолчанию. Дополнительные сведения о добавлении значений ключей в хранилище с помощью портал Azure или ИНТЕРФЕЙСА командной строки см. в разделе "Создание значения ключа".
Команда использует Диспетчер секретов для хранения секрета с именем Endpoints:AppConfiguration, который сохраняет конечную точку для хранилища конфигурации приложений. Замените заполнитель <your-App-Configuration-endpoint> конечной точкой хранилища параметров вашего приложения. Конечную точку можно найти на вкладке Обзор в хранилище параметров приложений в портале Azure.
dotnet user-secrets init
dotnet user-secrets set Endpoints:AppConfiguration "<your-App-Configuration-endpoint>"
Команда использует Secret Manager для хранения секрета с именем ConnectionStrings:AppConfiguration, который содержит строку подключения для хранилища конфигурации приложения. Замените заполнитель <your-App-Configuration-connection-string> строкой подключения для чтения из вашего хранилища конфигурации приложений. Вы можете найти строку подключения в параметрах доступа к хранилищу Конфигурация приложений в портале Azure.
dotnet user-secrets init
dotnet user-secrets set ConnectionStrings:AppConfiguration "<your-App-Configuration-connection-string>"
Совет
Некоторые оболочки усекают строки подключения, которые не заключены в кавычки. Убедитесь, что вывод команды dotnet user-secrets list отображает полную строку подключения. В противном случае повторно выполните команду, заключив строку подключения в кавычки.
Диспетчер секретов хранит секрет за пределами дерева проекта, что помогает предотвратить случайный общий доступ к секретам в исходном коде. Он используется только для локального тестирования веб-приложения. При развертывании приложения в Azure, например Служба приложений, используйте строки подключения, параметры приложения или переменные среды для хранения строка подключения. Кроме того, чтобы избежать строк подключения полностью, вы можете подключиться к Конфигурации приложений с помощью управляемых удостоверений или других удостоверений Microsoft Entra.
Откройте Program.cs и добавьте следующие пространства имен:
Вы используете DefaultAzureCredential для аутентификации в вашем хранилище Конфигурации приложений. Следуйте инструкциям, чтобы назначить вашим учетным данным роль Чтение данных конфигурации приложений. Перед запуском приложения обязательно предоставьте достаточно времени для распространения разрешения.
var builder = WebApplication.CreateBuilder(args);
// Retrieve the endpoint
string endpoint = builder.Configuration.GetValue<string>("Endpoints:AppConfiguration")
?? throw new InvalidOperationException("The setting `Endpoints:AppConfiguration` was not found.");
// Load configuration from Azure App Configuration
builder.Configuration.AddAzureAppConfiguration(options =>
{
options.Connect(new Uri(endpoint), new DefaultAzureCredential());
});
// The rest of existing code in program.cs
// ... ...
var builder = WebApplication.CreateBuilder(args);
// Retrieve the connection string
string connectionString = builder.Configuration.GetConnectionString("AppConfiguration")
?? throw new InvalidOperationException("The connection string 'AppConfiguration' was not found.");
// Load configuration from Azure App Configuration
builder.Configuration.AddAzureAppConfiguration(connectionString);
// The rest of existing code in program.cs
// ... ...
Этот код загружает все значения ключей, не имеющие метки из хранилища Конфигурация приложений. Дополнительные сведения о загрузке данных из Конфигурации приложений см. в справочнике API поставщика Конфигурации приложений.
Чтение из хранилища настроек приложений
В этом примере вы обновите веб-страницу, чтобы отобразить его содержимое с помощью параметров, настроенных в хранилище Конфигурация приложений.
Добавьте файл Settings.cs в корневой каталог проекта. Он определяет строго типизированный Settings класс для используемой конфигурации. Замените пространство имен именем проекта.
namespace TestAppConfig
{
public class Settings
{
public string BackgroundColor { get; set; }
public long FontSize { get; set; }
public string FontColor { get; set; }
public string Message { get; set; }
}
}
Привяжите раздел TestApp:Settings в конфигурации к объекту Settings.
Обновите Program.cs со следующим кодом и добавьте TestAppConfig пространство имен в начале файла.
using TestAppConfig;
// Existing code in Program.cs
// ... ...
builder.Services.AddRazorPages();
// Bind configuration "TestApp:Settings" section to the Settings object
builder.Services.Configure<Settings>(builder.Configuration.GetSection("TestApp:Settings"));
var app = builder.Build();
// The rest of existing code in program.cs
// ... ...
Откройте Index.cshtml.cs в каталоге Pages и обновите IndexModel класс следующим кодом.
using Microsoft.Extensions.Options Добавьте пространство имен в начале файла, если он еще не существует.
public class IndexModel : PageModel
{
private readonly ILogger<IndexModel> _logger;
public Settings Settings { get; }
public IndexModel(IOptionsSnapshot<Settings> options, ILogger<IndexModel> logger)
{
Settings = options.Value;
_logger = logger;
}
}
Откройте Index.cshtml в каталоге Pages и обновите содержимое следующим кодом.
Чтобы создать приложение с помощью интерфейса командной строки .NET, перейдите в корневой каталог проекта. Выполните приведенную ниже команду в командной оболочке.
dotnet build
Когда создание завершится, запустите веб-приложение локально с помощью следующей команды:
dotnet run
Выходные данные dotnet run команды содержат два URL-адреса. Откройте браузер и перейдите к одному из этих URL-адресов, чтобы получить доступ к приложению. Например: https://localhost:5001.
Если вы работаете в Azure Cloud Shell, нажмите кнопку Просмотр в Интернете, а затем — Настроить. При появлении запроса на настройку порта для предварительной версии введите 5000 и нажмите кнопку "Открыть и просмотреть".
Веб-страница выглядит следующим образом:
Очистка ресурсов
Если вы не планируете в дальнейшем использовать ресурсы, созданные при работе с этой статьей, удалите созданную группу ресурсов, чтобы избежать расходов.
Важно!
Удаление группы ресурсов — процесс необратимый. Группа ресурсов и все содержащиеся в ней ресурсы удаляются без возможности восстановления. Будьте внимательны, чтобы случайно не удалить не те ресурсы или группу ресурсов. Если ресурсы для работы с этой статьей созданы в группе ресурсов, которая содержит другие нужные ресурсы, удалите каждый ресурс отдельно в соответствующей области ресурса, чтобы не удалять группу ресурсов.
Войдите на портал Azure и выберитеГруппы ресурсов.
Введите имя группы ресурсов в поле Фильтровать по имени.
В списке результатов выберите имя группы ресурсов, чтобы просмотреть общие сведения.
Выберите команду Удалить группу ресурсов.
Подтвердите операцию удаления группы ресурсов. Введите имя группы ресурсов, которую необходимо удалить, и нажмите Удалить.
Через некоторое время группа ресурсов и все ее ресурсы будут удалены.
Следующие шаги
В этом кратком руководстве вы сможете:
Подготовлено новое хранилище конфигураций приложений.
Подключено к хранилищу конфигурации приложений с использованием библиотеки провайдера конфигурации приложений.
Считайте ключ-значения хранилища конфигурации приложения с помощью библиотеки поставщика конфигурации.
Отображается веб-страница с параметрами, настроенными в хранилище Конфигурация приложений.
Чтобы узнать, как настроить веб-приложение ASP.NET Core для динамического обновления параметров конфигурации, перейдите к следующему руководству.
Узнайте, как использовать службу "Конфигурация приложений Azure" для централизованного управления и защиты параметров конфигурации, а также для управления компонентами приложений.
Создавайте комплексные решения в Microsoft Azure для создания функций Azure, реализации веб-приложений и управления ими, разработки решений с использованием хранилища Azure и т. д.