删除继承的 ASP.NET 核心应用设置

Removing inherited 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"
}

但是我可以删除一个条目或一个部分,除非用一个空值覆盖每个值属性吗?

-S

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

因此,如果在 appsettings.json 文件中指定了一个设置,并且您想在 开发 环境中 运行 时删除它,您将需要在 appsettings.Development.json 文件中相应地明确设置(“”、{} 等,具体取决于设置)。

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