在使用IConfigurationBuilder配置.NET Core 2.1应用程序的通用主机时,我配置了4个源;但在ConfigureAppConfiguration的范围之后,会有6个源。
在某个时刻,我已经加载的2个额外源会被再次添加,以一种导致appsettings.Environment.json值被隐藏的顺序。我还尝试删除hostsettings.json配置并验证它不会影响此问题。 这是针对使用WebjobsSDK 3.0和.Net Core 2.1的Azure Webjob的。
var builder = new HostBuilder()
.ConfigureHostConfiguration(configurationBuilder =>
{
//This is to do some basic host configuration and should only add 2 sources
configurationBuilder.SetBasePath(Directory.GetCurrentDirectory());
configurationBuilder.AddJsonFile("hostsettings.json", optional: true);
configurationBuilder.AddEnvironmentVariables(prefix: "APPSETTING_ASPNETCORE_");
})
.ConfigureAppConfiguration((hostContext, configurationBuilder) =>
{
//at this point there are 0 sources in the sources
IHostingEnvironment env = hostContext.HostingEnvironment;
configurationBuilder.SetBasePath(Directory.GetCurrentDirectory());
configurationBuilder.AddJsonFile("appSettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appSettings.{env.EnvironmentName}.json", optional: true,
reloadOnChange: true);
configurationBuilder.AddEnvironmentVariables(prefix: "APPSETTING_ASPNETCORE_");
//at this point there are 4 sources
})
.ConfigureServices((hostContext, servicesCollection) =>
{
//now there are 6, 2 additional source that are duplicates
servicesCollection.Configure<IConfiguration>(hostContext.Configuration);
我希望配置提供程序只包含我设置的4个来源,包括ChainedConfigSource。但是会添加两个额外的来源,它们是在加载特定于环境的appsettings.environment.json之前我声明的appsettings.json和环境变量的重复项。
现在当注入到类中时,返回的是最后添加的appsettings.json设置而不是appsettings.environment.json的设置。