6

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

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

编辑:所以我只是查看了它的来源,HostFilteringStartupFilter它只是调用UseHostFilteringIApplicationBuilder,所以我只是将它添加到我的Startup.Configure但如果可能的话我仍然想要一种更清洁的方法..

4

1 回答 1

2

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

  1. 应用设置.json
  2. appsettings.{环境}.json
  3. Secret Manager(如果是开发环境)
  4. 环境变量。
  5. 命令行参数。

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

CreateDefaultBuilder 之上的覆盖配置是使用 ConfigureAppConfiguration 完成的:

    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
            ...

        })...
于 2019-06-04T08:29:38.013 回答