代码之家  ›  专栏  ›  技术社区  ›  Victorio Berra

如何使用appsettings.Development.json删除appsettings.json中的节点?

  •  1
  • Victorio Berra  · 技术社区  · 7 年前

    appsettings.Development.json 覆盖 或者别的 合并 appsettings.json . 我不知道如何使用appsettings.Development.json文件“清除”appsettings.json中的节点。

    https://github.com/aspnet/MetaPackages/blob/rel/2.0.0-preview1/src/Microsoft.AspNetCore/WebHost.cs#L159-L160

    appsettings.json文件

    {
      "Policy": {
        "roles": [
          {
            "name": "inventoryAdmin",
            "subjects": [ "bob", "alice" ],
            "identityRoles": [ "ActiveDirectory-Role-Manager" ]
          },
      ]
     }
    }
    

    appsettings.Development.Json:

    { "Policy": { "Roles": [] } }
    

    { "Policy": { "Roles": null } }
    

    当我通过类似 Configuration.Get<PolicyServer.Local.Policy>().Roles 我还有三个角色。

    1 回复  |  直到 7 年前
        1
  •  5
  •   Kirk Larkin    7 年前

    所有进入你的 IConfiguration

    {
        "Roles": [
            { "Name": "Role1", "Subjects": [ "Alice", "Bob" ] },
            { "Name": "Role2", "Subjects": [ "Charlie" ] }
        ]
    }
    

    虽然这本质上是一个树结构,但当添加到 I配置

    • Roles
    • Roles:0:Name = Role1
    • Roles:0:Subjects:0 = Alice
    • Roles:0:Subjects:1 = Bob
    • Roles:1:Name Role2
    • Roles:1:Subjects:0 = Charlie

    角色 它没有值,因为值只能是简单的字符串,而它本身只是一个父级。

    I配置

    {
        "Roles": []
    }
    

    这只会覆盖现有的 角色 没有什么 null 在JSON文件中-这就是这些东西的工作原理。

    appsettings.json 接近。例如,您可以将角色配置本身放入 appsettings.Production.json 文件,并将默认版本留空,以便它不存在于您的开发环境中。换言之,试着模仿你不同的 appsettings.json文件

    推荐文章