Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix WebApplicationBuilder to read environment specific config for logging #32822

Closed
wants to merge 10 commits into from
33 changes: 25 additions & 8 deletions src/DefaultBuilder/src/BootstrapHostBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,13 @@ namespace Microsoft.AspNetCore.Hosting
// This exists solely to bootstrap the configuration
internal class BootstrapHostBuilder : IHostBuilder
{
public IDictionary<object, object> Properties { get; } = new Dictionary<object, object>();
private readonly HostBuilderContext _context;
private readonly Configuration _configuration;
private readonly WebHostEnvironment _environment;

private readonly List<Action<IConfigurationBuilder>> _configureHostActions = new List<Action<IConfigurationBuilder>>();
private readonly List<Action<HostBuilderContext, IConfigurationBuilder>> _configureAppActions = new List<Action<HostBuilderContext, IConfigurationBuilder>>();

public BootstrapHostBuilder(Configuration configuration, WebHostEnvironment webHostEnvironment)
{
_configuration = configuration;
Expand All @@ -29,6 +31,8 @@ public BootstrapHostBuilder(Configuration configuration, WebHostEnvironment webH
};
}

public IDictionary<object, object> Properties { get; } = new Dictionary<object, object>();

public IHost Build()
{
// HostingHostBuilderExtensions.ConfigureDefaults should never call this.
Expand All @@ -37,9 +41,7 @@ public IHost Build()

public IHostBuilder ConfigureAppConfiguration(Action<HostBuilderContext, IConfigurationBuilder> configureDelegate)
{
configureDelegate(_context, _configuration);
_environment.ApplyConfigurationSettings(_configuration);
_configuration.ChangeBasePath(_environment.ContentRootPath);
_configureAppActions.Add(configureDelegate ?? throw new ArgumentNullException(nameof(configureDelegate)));
return this;
}

Expand All @@ -52,9 +54,7 @@ public IHostBuilder ConfigureContainer<TContainerBuilder>(Action<HostBuilderCont

public IHostBuilder ConfigureHostConfiguration(Action<IConfigurationBuilder> configureDelegate)
{
configureDelegate(_configuration);
_environment.ApplyConfigurationSettings(_configuration);
_configuration.ChangeBasePath(_environment.ContentRootPath);
_configureHostActions.Add(configureDelegate ?? throw new ArgumentNullException(nameof(configureDelegate)));
return this;
}

Expand All @@ -67,7 +67,7 @@ public IHostBuilder ConfigureServices(Action<HostBuilderContext, IServiceCollect

public IHostBuilder UseServiceProviderFactory<TContainerBuilder>(IServiceProviderFactory<TContainerBuilder> factory) where TContainerBuilder : notnull
{
// This is not called by HostingHostBuilderExtensions.ConfigureDefaults currently, but that chould change in the future.
// This is not called by HostingHostBuilderExtensions.ConfigureDefaults currently, but that could change in the future.
// If this does get called in the future, it should be called again at a later stage on the ConfigureHostBuilder.
return this;
}
Expand All @@ -78,5 +78,22 @@ public IHostBuilder UseServiceProviderFactory<TContainerBuilder>(Func<HostBuilde
// during the initial config stage. It should be called again later on the ConfigureHostBuilder.
return this;
}

internal void ExecuteActions()
{
foreach (var configureHostAction in _configureHostActions)
{
configureHostAction(_configuration);
}

_environment.ApplyConfigurationSettings(_configuration);

foreach (var configureAppAction in _configureAppActions)
{
configureAppAction(_context, _configuration);
}

_environment.ApplyConfigurationSettings(_configuration);
}
}
}
Loading