gpt4 book ai didi

c# - 如何替换自定义 appsettings.json 文件中的列表项?

转载 作者:太空宇宙 更新时间:2023-11-03 14:45:29 26 4
gpt4 key购买 nike

我有针对每个环境的自定义 appsettings.json 文件,例如 appsettings.Dev.json、appsettings.Test.json、appsettings.Prod.json。在主要的 appsettings.json 中,我有以下代码:

  "EmailSettings": {
"Recipients": [
"person@test.com"
]
}

然后在自定义 json 文件中,我想覆盖这个列表,如下所示:

  "EmailSettings": {
"Recipients": [
"anotherperson@test.com"
]
}

但是,它会像这样附加:

  "EmailSettings": {
"Recipients": [
"person@test.com",
"anotherperson@test.com"
]
}

对于所有其他类型的设置,它们会被替换,但出于某种原因,自定义设置文件中的列表似乎会被附加。使用 .net,您过去常常对 xslt 有更多的粒度,以便能够确定您是要替换还是附加覆盖的设置。这里有什么建议吗?

解决方案(对我而言)

我这样做了,它在自定义 json 设置中被替换了。主要的 appsettings.json:

  "EmailSettings": {
"Recipients:0": "person@test.com"
}

然后在自定义设置文件中:

  "EmailSettings": {
"Recipients:0": "anotherperson@test.com"
}

感谢您的回复!

最佳答案

我为环境(包括开发)使用了不同的appsettings文件

所以首先确保你已经在你的配置中添加了环境 json 文件:

config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{EnvironmentName}.json", optional: true, reloadOnChange: true)

然后在我原来的 appsettings.json 中它会是这样的:

"EmailSettings": {
"Recipients": []
}

然后进行本地开发(Development环境):appsettings.Development.json

"EmailSettings": {
"Recipients": [
"person@test.com"
]
}

然后是另一个环境(我们称之为 Staging):appsettings.Staging.json

"EmailSettings": {
"Recipients": [
"anotherperson@test.com"
]
}

然后,只需确保在您的其他环境中您已在环境变量中设置了 ASPNETCORE_ENVIRONMENT

关于c# - 如何替换自定义 appsettings.json 文件中的列表项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54433373/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com