快速入门:将 Azure Cache for Redis 与 ASP.NET Web 应用配合使用

在本快速入门中,将使用 Visual Studio 2019 来修改一个 ASP.NET Web 应用程序,该应用程序连接到 Azure Cache for Redis 以从该缓存中存储和获取数据。 然后,将该应用部署到 Azure 应用服务。

跳到代码

本文介绍如何修改示例应用的代码,以创建连接到 Azure Cache for Redis 的工作应用。

若要直接转到示例代码,请参阅 GitHub 上的 ASP.NET 快速入门示例

先决条件

创建缓存

接下来,创建要与应用一起使用的缓存。

  1. 若要创建缓存,请登录到 Azure 门户并选择“创建资源”

    左侧导航窗格中突出显示了“创建资源”。

  2. 在“入门”页上的搜索框中键入“Azure Cache for Redis”。 然后选择创建

    Azure 市场的屏幕截图,其中的搜索框中包含“Azure Cache for Redis”,并用红色框突出显示了“创建”。

  3. 在“新建 Redis 缓存”页上配置缓存的设置。

    设置 选择值 说明
    订阅 单击下拉箭头并选择你的订阅。 要在其下创建此新的 Azure Cache for Redis 实例的订阅。
    资源组 单击下拉箭头并选择一个资源组,或者选择新建并输入新的资源组名称。 要在其中创建缓存和其他资源的资源组的名称。 将所有应用资源放入一个资源组可以轻松地统一管理或删除这些资源。
    DNS 名称 输入唯一名称。 缓存名称必须是包含 1 到 63 个字符的字符串,只能包含数字、字母或连字符。 该名称必须以数字或字母开头和结尾,且不能包含连续的连字符。 缓存实例的主机名<DNS name>.redis.cache.chinacloudapi.cn
    位置 单击下拉箭头并选择一个位置。 选择使用缓存的其他服务附近的区域
    缓存 SKU 打开下拉列表并选择一个 SKU 此 SKU 决定可用于缓存的大小、性能和功能参数。 有关详细信息,请参阅用于 Redis 的 Azure 缓存概述
    缓存大小 打开下拉列表并选择缓存的大小 有关详细信息,请参阅用于 Redis 的 Azure 缓存概述
  4. 选择网络选项卡,或选择网络按钮(位于页面底部) 。

  5. 网络选项卡中,选择你的连接方法。

  6. 选择“下一步: 高级”选项卡,或选择页面底部的“下一步: 高级”按钮,以查看“高级”选项卡。

    显示工作窗格中的“高级”选项卡和可供选择选项的屏幕截图。

    • 对于“基本”或“标准”缓存,请切换非 TLS 端口的选项。 还可以选择是否要启用“Microsoft Entra 身份验证”。
    • 对于“高级”缓存,请配置非 TLS 端口、群集、托管标识和数据持久性的设置。 还可以选择是否要启用“Microsoft Entra 身份验证”。
  7. 选择下一步: 标记选项卡,或选择页面底部的下一步: 标记按钮 。

  8. 或者,在标记选项卡中,如果希望对资源分类,请输入名称或值。

  9. 选择查看 + 创建。 随后你会转到“查看 + 创建”选项卡,Azure 将在此处验证配置。

  10. 显示绿色的“已通过验证”消息后,选择创建

创建缓存需要一段时间。 可以在 Azure Cache for Redis 的概述页上监视进度。 如果“状态”显示为“正在运行”,则表示该缓存可供使用。

获取主机名、端口和访问密钥

若要连接到你的 Azure Cache for Redis 服务器,缓存客户端需要该缓存的主机名、端口和访问密钥。 在某些客户端中,这些项的名称可能略有不同。 可以在 Azure 门户中获取主机名、端口和密钥。

  • 若要获取缓存的访问密钥,请执行以下操作:

    1. 在 Azure 门户中转到自己的缓存。
    2. 在服务菜单中的“设置”下,选择“身份验证”
    3. 在“身份验证”窗格上,选择“访问密钥”选项卡
    4. 若要复制访问密钥的值,请选择密钥字段中的“复制”图标。

    屏幕截图显示了如何查找和复制 Azure Cache for Redis 实例的访问密钥。

  • 若要获取缓存的主机名和端口,请执行以下操作:

    1. 在 Azure 门户中转到自己的缓存。
    2. 在服务菜单中,选择“概述”。
    3. 在“Essentials”下,对于“主机名”,请选择“复制”图标以复制主机名值。 主机名值的形式为 <DNS name>.redis.cache.chinacloudapi.cn
    4. 对于“端口”,请选择“复制”图标以复制端口值。

    屏幕截图显示如何查找和复制 Azure Cache for Redis 实例的主机名和端口。

编辑 CacheSecrets.config 文件

  1. 在计算机上,创建一个名为“CacheSecrets.config”的文件。将文件放到一个不会连同示例应用程序的源代码一起签入的位置。 在本快速入门中,CacheSecrets.config 文件位于 C:\AppSecrets\ 文件夹中

  2. 编辑 CacheSecrets.config 文件,添加以下内容

    在代码中:

    • <cache-name> 替换为缓存主机名。

    • <access-key> 替换为缓存的主访问密钥。

      提示

      在密钥轮换期间重新生成主访问密钥时,可以将辅助访问密钥用作备用密钥。

    <appSettings>
        <add key="CacheConnection" value="<cache-name>.redis.cache.chinacloudapi.cn,abortConnect=false,ssl=true,allowAdmin=true,password=<access-key>"/>
    </appSettings>
    
  3. 保存文件。

更新 MVC 应用程序

在本部分中,模型-视图-控制器 (MVC) 应用程序会显示一个简单测试,用于验证与 Azure Cache for Redis 的连接。

web.config 文件如何连接到缓存

在本地运行应用程序时,将使用 CacheSecrets.config 中的信息连接到 Azure Redis 缓存实例。 稍后可将此应用程序部署到 Azure。 到时,请在 Azure 中配置一项应用设置,供应用程序用来检索缓存连接信息,而不是使用配置文件。

由于 CacheSecrets.config 文件未随应用程序一起部署到 Azure,因此仅在本地测试应用程序时才使用它。 请尽量安全地保管此信息,以帮助防止有人恶意访问缓存数据。

更新 web.config 文件

  1. 在解决方案资源管理器中,打开 web.config 文件。

    屏幕截图显示 Visual Studio 解决方案资源管理器中的 web.config 文件。

  2. 在 web.config 文件中,将 <appSettings> 元素设置为在本地运行应用程序

    <appSettings file="C:\AppSecrets\CacheSecrets.config">

ASP.NET 运行时合并了外部文件的内容以及 <appSettings> 元素中的标记。 如果找不到指定的文件,运行时会忽略文件属性。 应用程序的源代码中将不包括机密(连接到缓存的连接字符串)。 将 Web 应用部署到 Azure 时,不会部署 CacheSecrets.config 文件。

安装 StackExchange.Redis

解决方案需要 StackExchange.Redis 包才能运行。

安装 StackExchange.Redis 包:

  1. 若要配置应用以使用适用于 Visual Studio 的 StackExchange.Redis NuGet 包,请选择“工具”>“NuGet 包管理器”>“包管理器控制台”

  2. 在“包管理器控制台”窗口中,运行以下命令:

    Install-Package StackExchange.Redis
    

NuGet 包下载并添加了所需的程序集引用,以便客户端应用程序能够通过 StackExchange.Redis 客户端访问 Azure Cache for Redis。

使用 RedisConnection 连接到缓存

与缓存的连接由 RedisConnection 类管理。 连接首先在位于 ContosoTeamStats/Controllers/HomeController.cs 中的此语句中建立

   private static Task<RedisConnection> _redisConnectionFactory = RedisConnection.InitializeAsync(connectionString: ConfigurationManager.AppSettings["CacheConnection"].ToString()););

CacheConnection 机密的值是使用机密管理器配置提供程序访问的,并用作密码参数。

在 RedisConnection.cs 中,可以看到 StackExchange.Redis 命名空间已添加到代码中RedisConnection 类需要此命名空间。

using StackExchange.Redis;

RedisConnection 代码可确保始终与缓存建立正常的连接。 连接通过 StackExchange.Redis 中的 ConnectionMultiplexer 实例进行管理。 连接断开且无法自动重新连接时,RedisConnection 类会重新创建连接。

有关详细信息,请参阅 StackExchange.RedisGitHub 存储库中的代码。

验证示例中的布局视图

此示例的主页布局存储在 _Layout.cshtml 文件中。 在此页中,可以通过选择页面上的“Azure Cache for Redis 测试”来启动实际的缓存测试

  1. 在解决方案资源管理器中,选择“视图”,然后右键单击“Shared”文件夹。 然后打开“_Layout.cshtml”文件

  2. 验证以下行是否在 <div class="navbar-header"> 内:

    @Html.ActionLink("Azure Cache for Redis Test", "RedisCache", "Home", new { area = "" }, new { @class = "navbar-brand" })
    

    屏幕截图显示了网页上的欢迎和导航选项。

显示缓存中的数据

在主页上,从导航栏中选择 Azure Cache for Redis 测试,以查看示例输出

  1. 在解决方案资源管理器中,选择“视图”,然后右键单击“Home”文件夹

  2. 验证以下代码是否在 RedisCache.cshtml 文件中

    @{
        ViewBag.Title = "Azure Cache for Redis Test";
    }
    
    <h2>@ViewBag.Title.</h2>
    <h3>@ViewBag.Message</h3>
    <br /><br />
    <table border="1" cellpadding="10">
        <tr>
            <th>Command</th>
            <th>Result</th>
        </tr>
        <tr>
            <td>@ViewBag.command1</td>
            <td><pre>@ViewBag.command1Result</pre></td>
        </tr>
        <tr>
            <td>@ViewBag.command2</td>
            <td><pre>@ViewBag.command2Result</pre></td>
        </tr>
        <tr>
            <td>@ViewBag.command3</td>
            <td><pre>@ViewBag.command3Result</pre></td>
        </tr>
        <tr>
            <td>@ViewBag.command4</td>
            <td><pre>@ViewBag.command4Result</pre></td>
        </tr>
        <tr>
            <td>@ViewBag.command5</td>
            <td><pre>@ViewBag.command5Result</pre></td>
        </tr>
    </table>
    

在本地运行应用

默认情况下,项目配置为在 IIS Express 本地托管应用,以进行测试和调试。

在本地运行应用:

  1. 在 Visual Studio 中选择“调试”>“开始调试”,在本地生成并启动用于测试和调试的应用。

  2. 在浏览器中,选择导航栏上的“Azure Redis 缓存测试”。

  3. 在下面的示例中,Message 键以前有一个缓存值,该值是在门户中使用 Azure Redis 缓存控制台设置的。 应用更新了该缓存值。 应用还执行了 PINGCLIENT LIST 命令。

    屏幕截图显示在本地完成的简单测试。

在 Azure 中发布和运行

在本地成功测试应用后,即可将应用部署到 Azure 并在云中运行它。

将应用发布到 Azure 的步骤:

  1. 在 Visual Studio 的解决方案资源管理器中,右键单击项目节点,然后选择“发布”

    屏幕截图显示 Azure 中突出显示的“发布”菜单命令。

  2. 选择 Azure 应用服务>新建>发布

    屏幕截图显示设置发布到应用服务的菜单选项。

  3. 在“创建应用服务”对话框中进行以下更改:

    设置 操作 说明
    应用名称 使用默认值。 应用名称是应用部署到 Azure 时对应的主机名。 为了确保该名称的唯一性,可能会其后面添加一个时间戳后缀。
    订阅 选择 Azure 订阅。 将对此订阅收取任何相关的托管费用。 如果有多个 Azure 订阅,请确认已选择要使用的订阅。
    资源组 使用创建缓存时所用的同一资源组(例如 TestResourceGroup) 该资源组用于将所有资源作为一个组管理。 稍后,如果要删除应用,可以删除资源组以删除所有相关资源。
    应用服务计划 选择“新建”,然后创建名为 TestingPlan 的新应用服务计划。
    对于“位置”,使用与创建缓存时相同的值
    对于大小,请选择“免费”
    应用服务计划为要运行的 Web 应用定义一组计算资源。

    屏幕截图显示 Azure 中的应用服务对话框。

  4. 配置应用服务主机设置以后,请选择“创建”

  5. 在“输出”窗口中,检查发布状态。 发布应用后,应用的 URL 显示为输出:

    屏幕截图显示在 Visual Studio 中发布输出窗口。

为缓存添加应用设置

发布新应用后,在 Azure 门户中添加新的应用设置。 此设置可存储缓存连接信息。

添加应用设置的步骤:

  1. 在 Azure 门户中,在搜索栏中输入应用的名称。

    屏幕截图显示在 Azure 门户中搜索应用。

  2. 为应用添加名为 CacheConnection 的新应用设置,用于连接到缓存。 使用在 CacheSecrets.config 文件中为 CacheConnection 所用的相同值。 该值包含缓存主机名和访问密钥。

    屏幕截图显示添加应用设置。

在 Azure 中运行应用

  1. 在浏览器中,转到应用的 URL。 该 URL 显示在 Visual Studio“输出”窗口的发布操作结果中。 它也会显示在 Azure 门户中应用的“概述”窗格上。

  2. 在网页的导航栏中,选择“Azure Cache for Redis 测试”来测试缓存访问,就像之前在本地版本中那样

清理资源

要继续使用在本文中创建的资源,请保留资源组。

否则,为了避免与资源相关的费用,若已用完资源,可以删除已创建的 Azure 资源组。

警告

删除资源组的操作不可逆。 删除一个资源组时,该资源组中的所有资源都会被永久删除。 请确保不会意外删除错误的资源组或资源。 如果在现有资源组内创建了资源,并且该资源组中还有想要保留的资源,可以逐个删除这些资源,而不是删除资源组。

删除资源组

  1. 登录到 Azure 门户,然后选择“资源组”。

  2. 选择要删除的资源组。

    如果有多个资源组,请在“筛选任何字段”中,输入为完成本文创建的资源组的名称。 在搜索结果列表中,选择该资源组。

    屏幕截图显示了可从中选择要删除的资源组列表。

  3. 选择“删除资源组”

  4. 在“删除资源组”窗格中,输入资源组的名称进行确认,然后选择“删除”。

    屏幕截图显示了要求输入资源名称以确认删除的框。

很快将会删除该资源组及其所有资源。