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

快速入门:使用 Azure 应用配置创建 ASP.NET Core 应用

本快速入门将使用 Azure 应用程序配置来集中存储和管理 ASP.NET Core 应用的应用程序设置。 ASP.NET Core 使用由应用指定的一个或多个数据源的设置,生成基于键值的单个配置对象。 这些数据源称为配置提供程序 。 由于应用程序配置的 .NET Core 客户端作为配置提供程序实现,因此服务就像是另一个数据源。

先决条件

提示

Azure Cloud Shell 是免费的交互式 shell,可以使用它运行本文中的命令行指令。 它预安装了常用的 Azure 工具,其中包括 .NET Core SDK。 如果你已登录到 Azure 订阅,请从 shell.azure.com 启动 Azure Cloud Shell。 若要详细了解 Azure Cloud Shell,请阅读我们的文档

创建应用配置存储区

  1. 若要创建新应用程序配置存储区,请登录 Azure 门户。 在主页的左上角,选择“创建资源” 。 在“搜索服务和市场”框中,输入“应用程序配置”,然后选择 Enter

    Search for App Configuration

  2. 在搜索结果中选择“应用程序配置”,然后选择“创建” 。

    Select Create

  3. 在“创建应用配置”窗格中,输入以下设置:

    设置 建议的值 说明
    订阅 订阅 选择要用来测试应用配置的 Azure 订阅。 如果帐户只有一个订阅,则会自动选择该订阅并且不显示“订阅”列表 。
    资源组 AppConfigTestResources 为应用程序配置存储区资源选择或创建资源组。 此组可用于组织多个资源,删除该资源组可以同时删除这些资源。 有关详细信息,请参阅使用资源组管理 Azure 资源
    资源名称 全局唯一名称 输入要用于应用程序配置存储区资源的唯一资源名称。 该名称必须是包含 5 到 50 个字符的字符串,只能包含数字、字母和 - 字符。 该名称的开头或末尾不能是 - 字符。
    位置 美国中部 使用“位置”指定在其中托管应用配置存储区的地理位置 。 为获得最佳性能,请在应用程序的其他组件所在的同一区域创建资源。
    定价层 免费 选择所需的定价层。 有关详细信息,请参阅应用配置定价页
  4. 选择“查看 + 创建”以验证自己的设置 。

  5. 选择“创建”。 部署可能需要几分钟。

  6. 部署完成后,导航到“应用程序配置”资源。 选择“设置”“访问密钥”。 记下只读主密钥连接字符串。 稍后将使用此连接字符串来配置应用程序,以与创建的应用程序配置存储区进行通信。

  1. 选择“操作”>“配置资源管理器”>“创建”>“键-值”来添加以下键值对 :

    密钥
    TestApp:Settings:BackgroundColor #FFF
    TestApp:Settings:FontColor #000
    TestApp:Settings:FontSize 24
    TestApp:Settings:Message Azure 应用配置的数据

    暂时将“标签”和“内容类型”保留为空 。 选择“应用”。

创建一个 ASP.NET Core Web 应用

使用 .NET Core 命令行接口 (CLI) 创建新的 ASP.NET Core MVC 项目。 Azure Cloud Shell 提供了这些工具。 它们还可在 Windows、macOS 和 Linux 平台上使用。

在新的 TestAppConfig 文件夹中,运行以下命令,创建 ASP.NET Core MVC 项目:

dotnet new mvc --no-https --output TestAppConfig

添加机密管理器

一个称为“机密管理器”的工具会存储敏感数据,以用于项目树之外的开发工作。 此方法有助于防止意外共享源代码中的应用密码。 完成以下步骤可在 ASP.NET Core 项目中启用机密管理器:

导航到项目的根目录,并运行以下命令以在项目中启用机密存储:

dotnet user-secrets init

包含 GUID 的 UserSecretsId 元素将添加到 .csproj 文件中:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
    <UserSecretsId>8296b5b7-6db3-4ae9-a590-899ac642c0d7</UserSecretsId>
  </PropertyGroup>

</Project>

提示

若要详细了解机密管理器,请参阅在开发 ASP.NET Core 应用时安全存储应用机密

连接到应用程序配置存储区

  1. 运行以下命令,添加 Microsoft.Azure.AppConfiguration.AspNetCore NuGet 包引用:

    dotnet add package Microsoft.Azure.AppConfiguration.AspNetCore
    
  2. 在 .csproj 文件所在的同一目录中运行以下命令。 该命令使用机密管理器存储名为 ConnectionStrings:AppConfig 的机密,该机密存储应用程序配置存储区的连接字符串。 将 <your_connection_string> 占位符替换为应用程序配置存储区的连接字符串。 可以在 Azure 门户的“访问密钥” 下找到该连接字符串。

    dotnet user-secrets set ConnectionStrings:AppConfig "<your_connection_string>"
    

    重要

    有些 shell 会截断连接字符串,除非将连接字符串括在引号中。 确保 dotnet user-secrets list 命令的输出显示整个连接字符串。 如果未显示,请重新运行该命令,并将连接字符串括在引号中。

    机密管理器仅用于本地测试 web 应用程序。 将应用部署到 Azure 应用服务后,可以使用应用服务中的“连接字符串”应用程序设置,而无需使用机密管理器来存储连接字符串。

    使用 .NET Core 配置 API 访问此机密。 在所有支持的平台上,冒号 (:) 可以在配置 API 的配置名称中使用。 有关详细信息,请参阅配置键和值

  3. 根据环境选择正确的语法。

    在 Program.cs 中,将其内容替换为以下代码:

    var builder = WebApplication.CreateBuilder(args);
    //Retrieve the Connection String from the secrets manager 
    var connectionString = builder.Configuration.GetConnectionString("AppConfig");
    
    builder.Host.ConfigureAppConfiguration(builder =>
                    {
                        //Connect to your App Config Store using the connection string
                        builder.AddAzureAppConfiguration(connectionString);
                    })
                .ConfigureServices(services =>
                    {
                        services.AddControllersWithViews();
                    });
    
    var app = builder.Build();
    
    // Configure the HTTP request pipeline.
    if (!app.Environment.IsDevelopment())
    {
        app.UseExceptionHandler("/Home/Error");
    }
    app.UseStaticFiles(); 
    
    app.UseRouting();
    
    app.UseAuthorization();
    
    app.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
    
    app.Run();
    

此代码将使用连接字符串连接到应用程序配置存储并加载所有键值。 有关配置提供程序 API 的详细信息,请参阅应用配置的配置提供程序文档

从应用程序配置存储区读取数据

完成下面的步骤,读取和显示存储在应用程序配置存储区中的值。 可使用 .NET Core 配置 API 访问此存储区。 使用 Razor 语法显示键值。

打开 <app root>/Views/Home/Index.cshtml,并将其内容替换为以下代码:

@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration

<style>
    body {
        background-color: @Configuration["TestApp:Settings:BackgroundColor"]
    }
    h1 {
        color: @Configuration["TestApp:Settings:FontColor"];
        font-size: @Configuration["TestApp:Settings:FontSize"]px;
    }
</style>

<h1>@Configuration["TestApp:Settings:Message"]</h1>

在上述代码中,按如下所示使用应用程序配置存储区的键:

  • TestApp:Settings:BackgroundColor 键的值分配给 CSS background-color 属性。
  • TestApp:Settings:FontColor 键的值分配给 CSS color 属性。
  • TestApp:Settings:FontSize 键的值分配给 CSS font-size 属性。
  • TestApp:Settings:Message 键的值显示为标题。

在本地生成并运行应用

  1. 若要使用 .NET Core CLI 生成应用,请导航到项目的根目录。 在命令行界面中运行以下命令:

    dotnet build
    
  2. 生成成功完成后,请运行以下命令以在本地运行 Web 应用:

    dotnet run
    
  3. 如果要在本地计算机上操作,请使用浏览器导航到 http://localhost:5000 或命令输出中指定的位置。 此地址是在本地托管的 Web 应用的默认 URL。 如果要在 Azure Cloud Shell 中操作,请依次选择“Web 预览”按钮和“配置” 。

    Locate the Web Preview button

    系统提示配置预览端口时,请输入“5000”,然后选择“打开并浏览”。 网页将显示“数据来自 Azure 应用程序配置”。

清理资源

如果不想继续使用本文中创建的资源,请删除此处创建的资源组以避免产生费用。

重要

删除资源组的操作不可逆。 将永久删除资源组以及其中的所有资源。 请确保不要意外删除错误的资源组或资源。 如果在包含要保留的其他资源的资源组中创建了本文的资源,请从相应的窗格中单独删除每个资源,而不是删除该资源组。

  1. 登录到 Azure 门户,然后选择“资源组”。
  2. 在“按名称筛选”框中,输入资源组的名称
  3. 在结果列表中,选择资源组名称以查看概述。
  4. 选择“删除资源组”。
  5. 系统会要求确认是否删除资源组。 重新键入资源组的名称进行确认,然后选择“删除” 。

片刻之后,将会删除该资源组及其所有资源。

后续步骤

在本快速入门中,请执行以下操作:

  • 预配新的应用程序配置存储区。
  • 注册应用程序配置存储区的 .NET Core 配置提供程序。
  • 使用配置提供程序读取应用程序配置存储区的键。
  • 使用 Razor 语法显示应用程序配置存储区的键值。

若要了解如何配置 ASP.NET Core 应用以动态刷新配置设置,请继续学习下一个教程。