删除继承的ASP.NET Core appsettings

时间:2017-08-22 13:50:09

标签: asp.net-core appsettings

我在启动时有以下设置:

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

1 个答案:

答案 0 :(得分:6)

根据Configuration in ASP.NET Core文档,从两个文件加载设置,如果两者都指定了设置,则后者中的设置(即设置中的appsettings.{env.EnvironmentName}.json)将覆盖第一个之一。

因此,如果在appsettings.json文件中指定了一个设置,并且想要在 Development 环境中运行时将其删除,则需要相应地显式设置(null,{在appsettings.Development.json文件中,取决于设置等。

但是,此类设置可能会建议您的设置不应位于通用appsettings.json文件中,而应直接位于特定环境配置设置文件中。 这样,编写设置可能会更容易。