能否对从Azure App Configuration加载的配置键进行映射重命名
实现方案
该需求完全可以实现,核心是使用Azure App Configuration配置提供器内置的键修剪功能,无需修改本地配置文件,也不需要单独部署Azure App Configuration实例。
核心实现逻辑
- 注册Azure App Configuration服务时调用
TrimKeyPrefix方法,指定需要移除的前缀AppName1:,注意要保留末尾的冒号,避免误删其他包含AppName1字符的配置键 - 前缀修剪完成后,原本的
AppName1:Auth:ApiKey会被转换为Auth:ApiKey,和本地appsettings.json里的Auth:Duration属于同一配置节,可直接统一绑定读取
.NET平台代码示例
var builder = WebApplication.CreateBuilder(args); // 加载本地appsettings.json配置,该逻辑默认已包含在.NET项目模板中 builder.Configuration.AddJsonFile("appsettings.json"); // 注册Azure App Configuration服务并处理前缀 builder.Configuration.AddAzureAppConfiguration(options => { options.Connect(builder.Configuration["AzureAppConfigConnectionString"]) // 只拉取当前应用的配置,避免拉取其他应用的冗余配置 .Select("AppName1:*") // 移除前缀AppName1: .TrimKeyPrefix("AppName1:"); });
统一读取验证
完成上述配置后,可直接绑定整个Auth配置节,同时读取本地和Azure侧的配置值:
// 绑定配置模型到服务容器 builder.Services.Configure<AuthSettings>(builder.Configuration.GetSection("Auth")); // 配置模型定义示例 public class AuthSettings { public string ApiKey { get; set; } // 取值来源:Azure App Configuration public TimeSpan Duration { get; set; } // 取值来源:本地appsettings.json }
注意事项
- 如果存在多个需要修剪的前缀,可多次调用
TrimKeyPrefix方法,会按调用顺序依次处理 - 配置优先级遵循提供器注册顺序:后注册的提供器的同键值会覆盖之前的。如果需要Azure配置优先覆盖本地配置,保持
AddAzureAppConfiguration放在AddJsonFile之后即可,反之调整注册顺序 - 配合
Select方法过滤仅拉取当前应用前缀的配置,可减少冗余配置拉取,提升加载效率
内容的提问来源于stack exchange,提问作者Krzysztof Madej
相关产品推荐
相关产品推荐

