我在启动时有以下设置:
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", true, true);
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", true, true)
appsettings.json:
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
我知道我可以通过添加具有不同值的匹配JSON结构来覆盖给定环境的有效设置,并省略我想要继承的那些,例如appsettings.Development.json:
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
但我可以删除条目或部分,除非用空值覆盖每个value属性吗?
-S
答案 0 :(得分:6)
根据Configuration in ASP.NET Core文档,从两个文件加载设置,如果两者都指定了设置,则后者中的设置(即设置中的appsettings.{env.EnvironmentName}.json
)将覆盖第一个之一。
因此,如果在appsettings.json
文件中指定了一个设置,并且想要在 Development 环境中运行时将其删除,则需要相应地显式设置(null,{在appsettings.Development.json
文件中,取决于设置等。
但是,此类设置可能会建议您的设置不应位于通用appsettings.json
文件中,而应直接位于特定环境配置设置文件中。
这样,编写设置可能会更容易。