You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Visual Studio中为ASP.NET(.NET Framework 4.7.2)应用更换连接服务中的Azure Key Vault账户

针对ASP.NET (.NET Framework 4.7.2) 更换Azure Key Vault订阅及实例的解决方案

我完全懂你现在的头疼之处——用VS连接服务找不到配置页面,还得严格遵循从web.config读取配置的架构要求,不能自己瞎写读取逻辑。下面给你几个贴合场景的可行方案:

方案一:手动更新web.config的Key Vault配置块(最直接符合架构要求)

ASP.NET Framework 4.7.2是通过Microsoft.Configuration.ConfigurationBuilders.Azure这个NuGet包来实现从Key Vault读取配置的,你只需要修改web.config里的对应节点即可:

  1. 先确认项目已安装Microsoft.Configuration.ConfigurationBuilders.Azure包(如果没装,直接在NuGet包管理器里搜索安装适配4.7.2的版本)
  2. 打开web.config,找到<configBuilders>节点下的AzureKeyVault配置项,替换成新的正式Key Vault信息:
    假设你之前用服务主体认证,原来的配置是:
    <configBuilders>
      <builders>
        <add name="AzureKeyVault" 
             vaultName="demo-keyvault" 
             clientId="old-service-principal-id" 
             clientSecret="old-service-principal-secret" 
             type="Microsoft.Configuration.ConfigurationBuilders.AzureKeyVaultConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.Azure" />
      </builders>
    </configBuilders>
    
    修改为正式环境的配置:
    <configBuilders>
      <builders>
        <add name="AzureKeyVault" 
             vaultName="prod-keyvault" 
             clientId="new-prod-service-principal-id" 
             clientSecret="new-prod-service-principal-secret" 
             type="Microsoft.Configuration.ConfigurationBuilders.AzureKeyVaultConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.Azure" />
      </builders>
    </configBuilders>
    
    如果用托管标识(比如Azure App Service的系统分配标识),可以去掉clientId和clientSecret,加上useManagedIdentity="true":
    <add name="AzureKeyVault" 
         vaultName="prod-keyvault" 
         useManagedIdentity="true" 
         type="Microsoft.Configuration.ConfigurationBuilders.AzureKeyVaultConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.Azure" />
    
  3. 给新Key Vault配置正确的访问策略:无论是服务主体还是托管标识,都要赋予它Get和List机密/密钥的权限,否则应用会无法读取配置

方案二:修复connectedService.json让VS连接服务识别新配置

如果希望后续能通过VS界面管理Key Vault配置,可以手动修复项目根目录下的connectedService.json:

  1. 打开这个文件(如果是空文件就直接替换内容),填入新订阅和Key Vault的信息:
    {
      "ProviderId": "Microsoft.Azure.KeyVault",
      "Version": "1.0",
      "Name": "Azure Key Vault",
      "InstanceId": "/subscriptions/{你的新订阅ID}/resourceGroups/{正式环境资源组名}/providers/Microsoft.KeyVault/vaults/{正式Key Vault名}",
      "Properties": {
        "vaultName": "{正式Key Vault名}",
        "subscriptionId": "{你的新订阅ID}",
        "resourceGroup": "{正式环境资源组名}"
      }
    }
    
  2. 保存文件后重启Visual Studio,再打开「连接服务」面板,应该就能识别到新的Key Vault配置了(不过核心还是web.config的配置要正确,这个操作只是让VS界面能正常显示)

方案三:提前验证新Key Vault的访问权限

为了避免部署后出问题,建议先用Azure CLI或PowerShell验证新Key Vault的访问权限:

  • 用Azure CLI切换到新订阅:
    az account set --subscription {你的新订阅ID}
    
  • 测试访问新Key Vault的机密:
    az keyvault secret list --name {正式Key Vault名}
    

如果能正常列出机密,说明权限配置没问题;如果报错,先检查服务主体/托管标识的访问策略是否正确配置


内容的提问来源于stack exchange,提问作者Rick_Barb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.01 02:23:12