是否可以在" CreateDefaultBuilder"之后重新配置App配置?呼叫

时间:2018-06-07 23:04:31

标签: asp.net-core asp.net-core-2.1

CreateDefaultBuilder中,ConfigureAppConfiguration会调用某些默认值。我想覆盖(或追加)这些默认值。我尝试将CreateDefaultBuilder复制到我自己的函数中并编辑相应的行,但它无法解析函数中使用的类型,因为类型为internal到AspNetCore名称空间(具体而言) HostFilteringStartupFilter类型)。

我是否有更简洁的方法来修改CreateDefaultBuilder功能?

编辑:所以我只看了HostFilteringStartupFilter的来源,只是在UseHostFiltering上调用了IApplicationBuilder,所以我只是将其添加到我的Startup.Configure但我会如果可能,仍然喜欢更清洁的方法..

1 个答案:

答案 0 :(得分:1)

CreateDefaultBuilder设置要保留的合理默认值(配置部分除外)。 CreateDefaultBuilder执行以下配置设置:

  1. appsettings.json
  2. appsettings。{Environment} .json
  3. 秘密管理器(如果是开发环境)
  4. 环境变量。
  5. 命令行参数。

了解此默认分层,每个层都可能覆盖先前值的事实以及您只能将配置提供程序添加到列表(而不能删除它们)这一事实,现在可以解决您的问题。

使用ConfigureAppConfiguration完成CreateDefaultBuilder顶部的配置:

    WebHost.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration((hostingContext, config) =>
        {
            // Override here specifying new or previous layers to make sure 
            // you get the desired outcome.
            // e.g. If you specify your appsettings.json you basically start from scratch
            ...

        })...