Azure App Configuration无法加载密钥,.NET 6 Web应用获取配置为空
配置源加载时机错误
你的代码中先调用了config.Build(),再添加Azure App Configuration源。Build()会生成配置根实例,后续添加的配置源不会被纳入最终配置集合。
解决:移除var settings = config.Build();这行代码,框架会自动处理配置构建,无需手动提前执行。修改后代码:builder.WebHost.ConfigureAppConfiguration((ctx, config) => { if (ctx.HostingEnvironment.IsDevelopment()) { config.AddAzureAppConfiguration(c=> { c.Connect(ConnectionString); }); } });当前运行环境非Development
代码仅在IsDevelopment()为true时加载Azure App Configuration,若当前应用运行环境是生产/预发布等非开发环境,将不会加载该配置源。
解决:检查launchSettings.json中的ASPNETCORE_ENVIRONMENT值,或服务器环境变量,确认运行环境;若需在其他环境加载,调整条件判断逻辑即可。Azure键结构与代码不匹配
根据你提供的Azure App Configuration键值对截图,确认其中键的前缀为Rental:Settings层级,需保证键名与代码中GetSection("Rental:Settings")完全一致,同时注意大小写敏感性(跨环境部署时需统一大小写规则)。未指定配置筛选规则
若Azure App Configuration中存在大量键值对,可通过Select方法精准加载目标前缀的配置,避免遗漏或无关配置干扰:config.AddAzureAppConfiguration(c=> { c.Connect(ConnectionString) .Select("Rental:Settings:*"); // 加载所有以Rental:Settings为前缀的键 });AppSettings类结构不匹配
检查AppSettings类的属性是否与Azure中的键值对完全对应:比如Azure中有Rental:Settings:MaxRentDays,则AppSettings类需包含同名同类型的MaxRentDays属性。示例类结构:public class AppSettings { public int MaxRentDays { get; set; } // 其他对应属性 }Azure配置访问权限异常
确认使用的ConnectionString具有读取权限(需为Azure App Configuration的只读或读写密钥),若密钥无效或权限不足,会导致配置加载失败,可查看应用日志确认是否有相关错误。
内容的提问来源于stack exchange,提问作者Reza Shirazi

