【问题标题】:Is it possible to reconfigure App configuration after "CreateDefaultBuilder" call是否可以在“CreateDefaultBuilder”调用后重新配置应用程序配置
【发布时间】:2019-06-04 16:29:38
【问题描述】:

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

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

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

【问题讨论】:

  • 你到底想做什么?覆盖默认值的文档非常好
  • 显然我没有正确填写这个问题,因为我不记得我试图实现@Marcel 的具体目标。但是例如:github.com/aspnet/MetaPackages/blob/… 默认构建器设置了它自己的日志记录,如果这干扰了我自己的日志记录怎么办?我将如何禁用此功能?此外,我还没有找到任何关于覆盖 CreateDefaultBuilder 功能的文档,也许您可​​以指出我正确的方向?
  • 只需滚动浏览此页面docs.microsoft.com/en-us/aspnet/core/fundamentals/logging/…,您将了解如何自定义日志记录。您甚至可以删除 CreateDefaultBuild() 调用并自己添加所需的一切。
  • @Marcel 感谢分享该来源,虽然它提供了很多信息,但我还没有找到实现我想要的方法。在基本层面上,我想从 CreateDefaultBuilder 开始,然后删除/添加东西,直到它按我的意愿工作。您建议我删除 CreateDefaultBuilder 并添加所有内容并删除我不需要的内容基本上是我所做的,但我希望有一个更清洁的解决方案。好像没有这样的解决方案。

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


【解决方案1】:

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

  1. appsettings.json
  2. appsettings.{Environment}.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
            ...

        })...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    • 2011-06-06
    • 2023-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多