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

无法从Azure App Configuration读取配置,.NET 7 Web API绑定失败

问题分析与解决方案

核心问题

你在导入配置到Azure App Configuration时选择了__作为键分隔符,但.NET配置系统默认使用冒号(:)作为配置节的层级分隔符。当前代码未对Azure App Config返回的键做转换处理,导致Configuration.GetSection("ApiSettings")无法匹配到以ApiSettings__xxx形式存储的配置项,最终绑定失败。

修复步骤

修改Program.cs中AddAzureAppConfiguration的配置,添加键分隔符映射规则,让.NET配置系统能正确识别Azure存储的层级结构:

private static IHostBuilder CreateHostBuilder(string[] args)
{
    return Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            _ = webBuilder.UseStartup<Startup>();
            _ = webBuilder.ConfigureAppConfiguration((context, configurationBuilder) =>
            {
                configurationBuilder.Sources.Clear();
                
                configurationBuilder.AddAzureAppConfiguration(options =>
                {
                    options.Connect(new Uri("https://myappconfig.azconfig.io"),
                        new DefaultAzureCredential())
                        // 指定Azure App Config中使用的键分隔符为__
                        .Configure(options => options.KeyDelimiter = "__");
                }, false);
                // 移除手动调用的Build(),HostBuilder会自动处理配置构建
            });
        });
}

验证逻辑

设置KeyDelimiter = "__"后,Azure App Configuration中的ApiSettings__MaxRetries会被.NET配置系统识别为ApiSettings:MaxRetries,这样Configuration.GetSection("ApiSettings")就能正确绑定到你的ApiSettings类实例。

额外检查点

  • 确认ApiSettings类的属性名称与Azure App Config中的键后缀完全匹配(区分大小写)
  • 确保DefaultAzureCredential拥有读取Azure App Configuration资源的权限(可在Azure门户的IAM访问控制中验证)
  • 移除ConfigureAppConfiguration中的configurationBuilder.Build();调用,该操作会提前构建配置,可能干扰后续配置源的加载逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 06:27:22