【发布时间】:2021-03-20 04:56:59
【问题描述】:
我想为我的 ASP.NET Core 项目使用 JSON 配置,如下所述:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-2.2
我的配置是这样调用的:
config
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{commandConfig["Site"]}.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables();
在每个appsettings.<site>.json 中,我都可以这样写:
{
"Site": "siteName1"
}
但这似乎是一种浪费。我想要的是把这个放在appsettings.json:
{
"Site": "$(Site)"
}
并有变量替换替换 $(Site) 适当。
这样的事情可能吗?
【问题讨论】:
-
应该用什么替换
$(Site)? -
@DavidG 是的,这种语法中没有任何东西允许这样做,所以我想在最后做点什么,比如
.SubstituteVariables(context);并在上下文映射中传入 Site。 -
好吧,让我重新表述一下我要去的地方...如果您想用特定的已知值替换,那么您已经知道该值对吗?
-
是的。但是,如果我有 20 个站点,管理 20 个站点配置文件,这些文件不仅包含它们的
Site设置,还包含它们的日志位置 (c:\logs\${Site})、它们的错误电子邮件主题 ([${Site}] Error Occurred), etc is painful. Better to specify those three once in theappsettings.json`,正如我在本文中所写评论而不是手动替换和维护 20 个特定于站点的文件。 -
为什么你有 20 个配置文件?这没有意义。您有一个具有可替换值的配置文件。例如
config.EmailSubject.Replace("$(Site)", theNameOfThisSite)
标签: asp.net-core