使用Minimal API时在服务配置阶段读取ASP.NET Core配置
问题原因及解决方法
核心问题
你直接调用builder.Configuration.Get<Settings>()时,是从配置根节点尝试反序列化Settings对象,但你的实际配置数据存储在appName对应的子配置节点下,根节点并没有匹配Settings类的Url属性,所以返回null。而通过IOptions<Settings>能拿到值,是因为你调用builder.Services.Configure<Settings>(builder.Configuration.GetSection(appName))时,已明确指定从appName子节点绑定配置,IOptions内部会基于这个子节点读取数据。
修正方案
方案1:从指定子节点获取配置
把直接从根节点获取的代码,改成从appName对应的子节点反序列化:
// 替换原有的var settings = builder.Configuration.Get<Settings>(); var settings = builder.Configuration.GetSection(appName).Get<Settings>();
方案2:验证SSM配置层级匹配
确认AWS Systems Manager中的参数路径是否和代码逻辑匹配:
- 若你的
Settings类Url属性对应SSM参数,路径应该是/{env}/{appName}/Url - 如果参数路径是
/{env}/Url,则无需指定appName节点,直接从根节点Get<Settings>()即可,但要保证参数名和类属性名完全一致
额外说明
即使调用Build()之后再获取配置,本质还是从根节点读取,所以依然会返回null,核心问题是没有定位到正确的配置节点。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

