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无关。
好的,我的错误。
我试图从我的一个方法中通过serviceprovider获取选项。但由于应用尚未启动,我首先必须手动构建serviceCollection。