首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.Net核心变量在appSettings.json中的替换以引用其他配置值

.Net核心变量在appSettings.json中的替换以引用其他配置值
EN

Stack Overflow用户
提问于 2017-07-18 17:30:05
回答 2查看 2.8K关注 0票数 8

想象一下下面的appSettings.json文件:

代码语言:javascript
复制
{
   "GlobalSettings": {
        "BaseUrl": "http://example.com:5000"
    },
    "NavigationSettings": {
        "LoginUrl": "{GlobalSettings:BaseUrl}/Login"
    }
}

我想要做的是在GlobalSettings:BaseUrl的值中自动替换NavigationSettings:LoginUrl的值。我知道可以使用appSettings.{env}.json覆盖特定的键,但这会覆盖整个值,而不仅仅是它的一部分。

我可以使用类似于下面这样的扩展方法来解决这个问题,但是这需要程序员记住在任何他们想要替换配置值的地方调用扩展方法。

代码语言:javascript
复制
ReplaceConfigValues(this string input, IConfiguration config) { /*...*/ }

有人能建议我可以使用的其他方法吗,或者我可能缺少了一些新的.Net核心特性?

即使在配置值中引用环境变量也是有用的,但我也不知道有什么方法可以做到这一点。例如。

代码语言:javascript
复制
"LoginUrl": "${ENV_GLOBAL_BASE_URL}/Login"
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-24 13:30:28

曾俊华的话是真的,还没有内置的东西。我为此创建了一个库,它完全符合你的期望。参见:https://github.com/molinch/ConfigurationSubstitutor,您只需将其注册为另一个配置源即可。

例如,如果在配置中定义了这三个条目:

  • Foo = {Bar1}{Bar2}{Bar1}
  • Bar1 =巴里斯塔
  • Bar2 = -Jean-

当从配置请求Foo时,您将得到:Barista-Jean-Barista

票数 2
EN

Stack Overflow用户

发布于 2019-04-25 03:50:37

试试HOCON https://github.com/lightbend/config/blob/master/HOCON.md

代码语言:javascript
复制
{
   "GlobalSettings": {
        "BaseUrl": "http://example.com:5000"
    },
    "NavigationSettings": {
        "LoginUrl": "{GlobalSettings:BaseUrl}/Login"
    }
}

可以翻译成

代码语言:javascript
复制
"GlobalSettings": {
    "BaseUrl": "http://example.com:5000"
}

"NavigationSettings": {
    "LoginUrl": "${GlobalSettings.BaseUrl}/Login"
}

下面是配置扩展:https://github.com/akkadotnet/HOCON https://www.nuget.org/packages/Hocon.Extensions.Configuration/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45173482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档