是否可以在“ CreateDefaultBuilder”调用之后重新配置应用程序配置

Bar*_*all 5 asp.net-core asp.net-core-2.1

CreateDefaultBuilder通话中使用ConfigureAppConfiguration了一些默认设置。我想覆盖(或附加)这些默认值。我试图复制CreateDefaultBuilder到我自己的函数中并编辑相应的行,但是它无法解析该函数​​中使用的类型,因为该类型属于internalAspNetCore命名空间(特别是该HostFilteringStartupFilter类型)。

有什么更干净的方法可以让我修改CreateDefaultBuilder功能吗?

编辑:所以我只是看着源HostFilteringStartupFilter,它只是调用UseHostFilteringIApplicationBuilder,所以我就补充说,我的Startup.Configure,但我还是想如果可能的话更简洁的方法..

Cos*_*ntu 2

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

  1. 应用程序设置.json
  2. appsettings.{环境}.json
  3. Secret Manager(如果是开发环境)
  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
            ...

        })...
Run Code Online (Sandbox Code Playgroud)