移除继承的ASP.NET Core appsettings

14

我在Startup中有以下设置:

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

1个回答

9
根据ASP.NET Core配置文档,设置从文件中加载。如果一个设置在两个文件中都有指定,后一个文件中的设置将覆盖前一个文件中的设置,即在您的设置中,appsettings.{env.EnvironmentName}.json将覆盖第一个文件中的设置。

因此,如果在appsettings.json文件中指定了某个设置,并且希望在开发环境下删除它,则需要在appsettings.Development.json文件中显式设置相应的内容("",{}等取决于设置)。

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


@DavidGardiner 你是对的。我刚刚根据你的反馈更新了,谢谢。 - smn.tino
2
这个答案并没有提供明确的解决方案。例如,如果我的配置键之一是TimeSpan,并且我在appsettings.json中为其配置了一些值,那么我该如何在appsettings.Development.json中取消设置它?如果我将其设置为"configKey":"",我会收到一个异常,因为空字符串不能分配给TimeSpan - mnj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接