.NET Core中Key-per-file配置提供器层级文件名映射失效问题求助
解决Key-per-file配置提供器的层级键映射问题
嘿,我之前也踩过这个坑!Key-per-file配置提供器处理层级配置项的时候,单下划线_并不是冒号:的正确替代符,这就是你用Logging_Backend_URL文件没生效的原因。下面给你两种可行的解决方案:
方案1:用目录结构表示层级关系
这是最直观的方式,完全对应配置项的层级:
- 在你的配置目录下创建一个
Logging子文件夹 - 进入
Logging文件夹,再创建Backend子文件夹 - 在
Backend文件夹里创建一个名为URL的文件,把你要配置的值写入这个文件
最终的目录结构应该是这样的:
你的配置根目录/ Logging/ Backend/ URL
这样ASP.NET Core会自动识别这个结构,将文件内容映射到Logging:Backend:URL配置项。
方案2:用双下划线__替代冒号作为分隔符
如果你不想创建多层目录,可以用双下划线来表示配置层级的分隔:
- 把你的文件名从
Logging_Backend_URL改成Logging__Backend__URL(注意是两个下划线,不是一个) - Key-per-file提供器会自动将双下划线解析为配置路径中的冒号,这样就能正确映射到
Logging:Backend:URL了
验证配置是否生效
你可以在代码里加一行验证,确认配置是否被正确读取:
var backendUrl = Configuration["Logging:Backend:URL"]; Console.WriteLine($"读取到的后端日志URL:{backendUrl}");
内容的提问来源于stack exchange,提问作者quickquestion123
相关产品推荐
相关产品推荐

