如何在 .NET Framework 4.7.1 中使用 Azure KeyVault 覆盖 Web.config 值

Bmo*_*moe 11 c# .net-4.0 azure-keyvault .net-4.7.1

如何在 ASP.NET Framework 4.7.1 WebForms 应用程序中实现 Microsoft 的 Azure KeyVault,以使用web.configKeyVault 中的值覆盖其中的值?我确实看到参考资料表明我们需要最低版本的 .NET Framework 4.7.1 才能做到这一点,但 Microsoft 提供的示例适用于 .NET Core。我的配置是web.config文件而不是appsettings.json. 我也有Global.asax.cs文件而不是Startup.csProgram.cs

kav*_*yaS 8

要在 ASP.NET Framework 4.7.1 WebForms 应用程序中实现 Microsoft 的 Azure KeyVault,首先需要创建一个 Azure Key Vault。

\n
    \n
  • 您需要提供资源组、唯一名称和位置,然后\n单击“查看 + 创建”。
  • \n
  • 可以参考创建 Azure keyvault 的步骤\n>>( https://learn.microsoft.com/en-us/azure/key-vault/quick-create-portal )
  • \n
  • 接下来选择 Secrets 边栏选项卡并添加您的应用设置和\n可在 web.config 文件 中访问的连接字符串。您可以单击“生成/导入”按钮并选择“上传”选项为“手动”。然后配置您的应用设置和连接字符串 -\n名称和值选项的键和值。并保留其他选项\n默认值。
  • \n
\n
\n

ASP.NET 中的配置生成器提供了一种通过使用不同的源(环境\n变量、Key Vault 等)来修改和/或覆盖来自配置文件(对于 ASP.NET 而言为 Web.config\n)的值的方法。 。

\n
\n

连接到 Azure 密钥保管库:

\n
    \n
  • 若要从 Visual Studio 连接到 Azure Key Vault,您需要右键\n单击该项目并选择“添加”>“连接服务”菜单。\n在此输入图像描述

    \n
  • \n
  • 从选项中,选择“使用 Azure Key Vault 保护机密”选项。

    \n
  • \n
\n

在此输入图像描述

\n
    \n
  • 现在,如果尚未登录您的帐户,您可能需要登录\n然后从列表中选择所需的密钥保管库。\n在此输入图像描述

    \n
  • \n
  • 然后单击“添加”按钮将密钥保管库引用添加到您的\n应用程序。这会将 NuGet 包\nMicrosoft.Configuration.ConfigurationBuilders.Azure 的引用添加到项目中。

    \n
  • \n
\n

它还会在 Web.Config 文件中添加一些配置。

\n

(或者)

\n
    \n
  • 在解决方案资源管理器中,右键单击您的项目,然后选择管理\nNuGet 包。在“浏览”选项卡中,找到并安装\nMicrosoft.Configuration.ConfigurationBuilders.Azure
  • \n
\n

打开web.config文件,然后编写以下代码:

\n

a) 使用您的 keyvault 名称添加 configSections 和 configBuilders,如下所示

\n
     <configSections>\n        <section\n            name="configBuilders"\n            type="System.Configuration.ConfigurationBuildersSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"\n            restartOnExternalChanges="false"\n            requirePermission="false" />\n     </configSections>\n     <configBuilders>\n        <builders>\n        <add\n                name="AzureKeyVault"\n                vaultName="vaultname"\n                type="Microsoft.Configuration.ConfigurationBuilders.AzureKeyVaultConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.Azure, Version=1.0.0.0, Culture=neutral"\n                vaultUri="https://vaultname.vault.azure.net" />\n        </builders>\n     </configBuilders>\n
Run Code Online (Sandbox Code Playgroud)\n

b) 找到 appSettings 标签,添加属性 configBuilders="AzureKeyVault",然后添加一行,如下所示:

\n
\n    <appSettings configBuilders="AzureKeyVault">\n      <add key="webpages:Version" value="3.0.0.0" />\n      <add key="webpages:Enabled" value="false" />\n      <add key="ClientValidationEnabled" value="true" />\n      <add key="UnobtrusiveJavaScriptEnabled" value="true" />\n      <add key="TextAnalyticsKey" value="from key vault" />\n    </appSettings>\n\n    <connectionStrings configBuilders="AzureKeyVault">\n      <add name="DefaultConnection" connectionString="from key vault" providerName="System.Data.SqlClient" />\n      <add key="StorageConnectionString" value="from key vault" />\n    </connectionStrings>\n
Run Code Online (Sandbox Code Playgroud)\n

c) 编辑 HomeController.cs 中的 About 方法,以显示确认值。

\n
    public ActionResult About()\n    {\n        ViewBag.Message = "Key vault value = " + ConfigurationManager.AppSettings["TextAnalyticsKey"];\n    }\n
Run Code Online (Sandbox Code Playgroud)\n

通过这种方式,如果您运行的应用程序使用 .NET Framework 4.7 或更高版本,则可以在经典 ASP.NET MVC 应用程序中连接和使用 Azure Key Vault。

\n

您可以参考以下文档以获得相同的详细解释:

\n\n