想象一下下面的appSettings.json文件:
{
"GlobalSettings": {
"BaseUrl": "http://example.com:5000"
},
"NavigationSettings": {
"LoginUrl": "{GlobalSettings:BaseUrl}/Login"
}
}我想要做的是在GlobalSettings:BaseUrl的值中自动替换NavigationSettings:LoginUrl的值。我知道可以使用appSettings.{env}.json覆盖特定的键,但这会覆盖整个值,而不仅仅是它的一部分。
我可以使用类似于下面这样的扩展方法来解决这个问题,但是这需要程序员记住在任何他们想要替换配置值的地方调用扩展方法。
ReplaceConfigValues(this string input, IConfiguration config) { /*...*/ }有人能建议我可以使用的其他方法吗,或者我可能缺少了一些新的.Net核心特性?
即使在配置值中引用环境变量也是有用的,但我也不知道有什么方法可以做到这一点。例如。
"LoginUrl": "${ENV_GLOBAL_BASE_URL}/Login"发布于 2020-07-24 13:30:28
曾俊华的话是真的,还没有内置的东西。我为此创建了一个库,它完全符合你的期望。参见:https://github.com/molinch/ConfigurationSubstitutor,您只需将其注册为另一个配置源即可。
例如,如果在配置中定义了这三个条目:
当从配置请求Foo时,您将得到:Barista-Jean-Barista
发布于 2019-04-25 03:50:37
试试HOCON https://github.com/lightbend/config/blob/master/HOCON.md
{
"GlobalSettings": {
"BaseUrl": "http://example.com:5000"
},
"NavigationSettings": {
"LoginUrl": "{GlobalSettings:BaseUrl}/Login"
}
}可以翻译成
"GlobalSettings": {
"BaseUrl": "http://example.com:5000"
}
"NavigationSettings": {
"LoginUrl": "${GlobalSettings.BaseUrl}/Login"
}下面是配置扩展:https://github.com/akkadotnet/HOCON https://www.nuget.org/packages/Hocon.Extensions.Configuration/
https://stackoverflow.com/questions/45173482
复制相似问题