为什么WebHost.CreateDefaultBuilder.UseConfiguration没有将配置传递给应用程序

问题描述 投票:0回答:1

WebHost.CreateDefaultbuilder(args).UseConfiguration,默认情况下,应该使用webhost和应用程序的配置。 ConfigureAppConfiguration仅用于配置应用程序,而不是主机。

以下代码之前正在运行,没有任何问题。从.net核心2.1更新到2.2并更新一些nuget软件包以支持.net核心2.2后,代码不再有效。

我确实找到了一个肮脏的黑客,但我想摆脱这个,因为我担心将来可能会得到一些不必要的结果。

return WebHost.CreateDefaultBuilder(args)
    .UseContentRoot(AppDomain.CurrentDomain.BaseDirectory)
    .UseConfiguration(ConfigurationService.Config)
    // Dirty hack to temp fix my problem
    //.ConfigureAppConfiguration(configuration => configuration.AddConfiguration(ConfigurationService.Config))
    .UseStartup<Startup>()
    .UseSerilog()
    .Build();

ConfigurationService.Config是在调用webhost之前的静态ConfigurationRoot构建。 ConfigurationService还会开始记录,确定某些目录和其他内容。

返回的配置包含:environment,appsettings.json文件,custom.json文件和命令行提供程序。我知道这适用于主机,因为custom.json文件中的kestrel配置。在所有更改之前,如果我向IConfigurationRoot添加依赖项,我也会看到相同的提供程序。

现在我在IConriguration依赖项(链接,环境,appsettings,appsetting.development,命令行)上看到了默认的.net核心提供程序(最重要的一个,我的custom.json文件不在这里)。

我已经尝试过不使用静态图标配置根,并使用返回WebHost的相同方法构建它,但无效,因此它与我的ConfigurationService无关。

c# asp.net-core configuration
1个回答
0
投票

好的,我的错误。

我试图从我的一个方法中通过serviceprovider获取选项。但由于应用尚未启动,我首先必须手动构建serviceCollection。

© www.soinside.com 2019 - 2024. All rights reserved.