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

使用ConfigurationBuilder,如何读取配置中Key Vault名称调用AddAzureKeyVault?是否需两次构建?

问题解答

不需要纠结“一次性完成”,实际开发里通常用两次构建ConfigurationBuilder的方式来解决这个问题,步骤清晰直接:

  1. 第一次构建:只加载本地配置文件(比如appsettings.json),目的是读取其中存储的Key Vault名称。
  2. 第二次构建:在本地配置的基础上,加入Azure Key Vault作为配置源,完成完整的配置构建。

修改后的代码示例:

private static IConfigurationRoot GetIConfigurationRoot()
{
    // 第一次构建:读取本地配置,获取Key Vault名称
    var tempConfig = new ConfigurationBuilder()
        .SetBasePath(Directory.GetCurrentDirectory())
        .AddJsonFile("appsettings.json", optional: false)
        .AddEnvironmentVariables()
        .Build();

    // 从临时配置中取出Key Vault名称(需确保appsettings里有对应配置项)
    var keyVaultName = tempConfig["KeyVaultName"];
    if (string.IsNullOrEmpty(keyVaultName))
    {
        throw new InvalidOperationException("配置文件中未设置Key Vault名称");
    }

    // 第二次构建:整合本地配置与Azure Key Vault
    var root = new ConfigurationBuilder()
        .SetBasePath(Directory.GetCurrentDirectory())
        .AddJsonFile("appsettings.json", optional: false)
        .AddAzureKeyVault($"https://{keyVaultName}.vault.azure.net")
        .AddEnvironmentVariables()
        .Build();
                
    return root;
}

额外注意事项:

  • 确保appsettings.json中配置了对应项,示例格式如下:
    {
      "KeyVaultName": "你的密钥保管库名称"
    }
    
  • 本地开发时,需通过Azure CLI或环境变量完成身份认证;如果应用部署在Azure环境(如App Service),可通过系统分配托管身份授予访问Key Vault的权限,无需额外凭据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 01:55:02