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

ASP.NET 6 MVC API无法从appsettings.json读取Azure Key Vault密钥值

问题分析与解决

核心原因

你存在一个关键误解:Azure Key Vault的密钥不会自动写入appsettings.json文件。Program中能获取到kv-secret,是因为你通过builder.Configuration.AddAzureKeyVault()把Azure Key Vault添加成了配置源,此时程序的配置是多个源(appsettings.json、Key Vault等)的组合。而仓储类里的代码重新创建了ConfigurationBuilder,仅加载了appsettings.json,未包含Key Vault配置源,所以无法拿到该密钥值。

正确解决方案:依赖注入IConfiguration

ASP.NET Core推荐通过依赖注入获取配置,而非手动构建ConfigurationBuilder。修改仓储类代码如下:

public class YourRepository
{
    private readonly IConfiguration _configuration;

    // 构造函数注入IConfiguration
    public YourRepository(IConfiguration configuration)
    {
        _configuration = configuration;
    }

    public List<string> GetValueFromAppSettingJsonFile()
    {
        // 直接使用注入的配置,已包含Key Vault配置源
        var check4 = _configuration["kv-secret"];
        // 后续业务逻辑...
        return new List<string> { check4 };
    }
}

可选方案:手动添加Key Vault配置源(不推荐)

如果一定要手动构建配置,需在仓储类的ConfigurationBuilder中同步添加Azure Key Vault配置源,与Program中的逻辑保持一致:

public List<string> GetValueFromAppSettingJsonFile()
{
    var configuration = new ConfigurationBuilder()
        .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
        // 添加Key Vault配置源
        .AddAzureKeyVault(new Uri("https://kv-vault.azure.net/"), new DefaultAzureCredential())
        .Build();           
    var check4 = configuration["kv-secret"];
    // 后续业务逻辑...
    return new List<string> { check4 };
}

注意:这种方式会重复初始化配置源,增加系统开销,不符合ASP.NET Core的设计理念,优先推荐依赖注入的实现方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:31:50