Skip to content

Commit 2804747

Browse files
committed
cleanup
1 parent 31a3302 commit 2804747

File tree

3 files changed

+17
-24
lines changed

3 files changed

+17
-24
lines changed

src/DefaultBuilder/src/BootstrapHostBuilder.cs

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ internal class BootstrapHostBuilder : IHostBuilder
2020
private readonly List<Action<HostBuilderContext, IConfigurationBuilder>> _configureAppActions = new();
2121
private readonly List<Action<HostBuilderContext, IServiceCollection>> _configureServicesActions = new();
2222

23-
private readonly List<Action<IHostBuilder>> _delayUntilBuildActions = new();
23+
private readonly List<Action<IHostBuilder>> _remainingOperations = new();
2424

2525
public BootstrapHostBuilder(ConfigurationManager configuration, WebHostEnvironment webHostEnvironment, IServiceCollection serviceCollection)
2626
{
@@ -58,7 +58,7 @@ public IHostBuilder ConfigureContainer<TContainerBuilder>(Action<HostBuilderCont
5858
throw new ArgumentNullException(nameof(configureDelegate));
5959
}
6060

61-
_delayUntilBuildActions.Add(hostBuilder => hostBuilder.ConfigureContainer<TContainerBuilder>(configureDelegate));
61+
_remainingOperations.Add(hostBuilder => hostBuilder.ConfigureContainer<TContainerBuilder>(configureDelegate));
6262
return this;
6363
}
6464

@@ -89,7 +89,7 @@ public IHostBuilder UseServiceProviderFactory<TContainerBuilder>(IServiceProvide
8989
throw new ArgumentNullException(nameof(factory));
9090
}
9191

92-
_delayUntilBuildActions.Add(hostBuilder => hostBuilder.UseServiceProviderFactory<TContainerBuilder>(factory));
92+
_remainingOperations.Add(hostBuilder => hostBuilder.UseServiceProviderFactory<TContainerBuilder>(factory));
9393
return this;
9494
}
9595

@@ -102,12 +102,17 @@ public IHostBuilder UseServiceProviderFactory<TContainerBuilder>(Func<HostBuilde
102102
throw new ArgumentNullException(nameof(factory));
103103
}
104104

105-
_delayUntilBuildActions.Add(hostBuilder => hostBuilder.UseServiceProviderFactory<TContainerBuilder>(factory));
105+
_remainingOperations.Add(hostBuilder => hostBuilder.UseServiceProviderFactory<TContainerBuilder>(factory));
106106
return this;
107107
}
108108

109-
public void RunDefaultCallbacks()
109+
public void RunDefaultCallbacks(HostBuilder innerBuilder)
110110
{
111+
// This is called twice. Once in the WebApplicationBuilde ctor and again in Build() after
112+
// WebHostBuilderExtensions.Configure(ConfigureApplication) is called on a GenericWebHostBuilder
113+
// that was captured in a ConfigureWebHostDeafaults() callback in the ctor.
114+
115+
// We clear the Lists so Actions run in the constructor don't get run again during Build().
111116
foreach (var configureHostAction in _configureHostActions)
112117
{
113118
configureHostAction(_configuration);
@@ -131,19 +136,12 @@ public void RunDefaultCallbacks()
131136
configureServicesAction(_hostContext, _serviceCollection);
132137
}
133138
_configureServicesActions.Clear();
134-
}
135-
136-
public void RunDelayedCallbacks(IHostBuilder innerBuilder)
137-
{
138-
// This will only run callbacks added by WebApplicationBuilder.Build().
139-
// Other callbacks were run and cleared in the WebApplicationBuilder ctor.
140-
RunDefaultCallbacks();
141139

142-
foreach (var callback in _delayUntilBuildActions)
140+
foreach (var callback in _remainingOperations)
143141
{
144142
callback(innerBuilder);
145143
}
146-
_delayUntilBuildActions.Clear();
144+
_remainingOperations.Clear();
147145
}
148146
}
149147
}

src/DefaultBuilder/src/WebApplicationBuilder.cs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,7 @@ public sealed class WebApplicationBuilder
2020
private const string EndpointRouteBuilderKey = "__EndpointRouteBuilder";
2121

2222
private readonly HostBuilder _hostBuilder = new();
23-
2423
private readonly BootstrapHostBuilder _bootstrapHostBuilder;
25-
private readonly ConfigureHostBuilder _deferredHostBuilder;
26-
private readonly ConfigureWebHostBuilder _deferredWebHostBuilder;
27-
2824
private readonly WebHostEnvironment _environment;
2925
private readonly WebApplicationServiceCollection _services = new();
3026

@@ -52,11 +48,11 @@ internal WebApplicationBuilder(Assembly? callingAssembly, string[]? args = null)
5248
// This runs inline.
5349
_bootstrapWebHostBuilder = webHostBuilder;
5450
});
55-
_bootstrapHostBuilder.RunDefaultCallbacks();
51+
_bootstrapHostBuilder.RunDefaultCallbacks(_hostBuilder);
5652

5753
Logging = new LoggingBuilder(Services);
58-
WebHost = _deferredWebHostBuilder = new ConfigureWebHostBuilder(Configuration, _environment, Services);
59-
Host = _deferredHostBuilder = new ConfigureHostBuilder(Configuration, _environment, Services);
54+
WebHost = new ConfigureWebHostBuilder(Configuration, _environment, Services);
55+
Host = new ConfigureHostBuilder(Configuration, _environment, Services);
6056

6157
// This is important because GenericWebHostBuilder does the following and we want to preserve the WebHostBuilderContext:
6258
// context.Properties[typeof(WebHostBuilderContext)] = webHostBuilderContext;
@@ -123,7 +119,7 @@ public WebApplication Build()
123119
_bootstrapWebHostBuilder.Configure(ConfigureApplication);
124120
_environment.ApplyEnvironmentSettings(_bootstrapWebHostBuilder);
125121
// This has further modified the _bootstrapHostBuilder, so we need to run the newly added callbacks in the proper order.
126-
_bootstrapHostBuilder.RunDelayedCallbacks(_hostBuilder);
122+
_bootstrapHostBuilder.RunDefaultCallbacks(_hostBuilder);
127123

128124
// This needs to go here to avoid adding the IHostedService that boots the server twice (the GenericWebHostService).
129125
// Copy the services that were added via WebApplicationBuilder.Services into the final IServiceCollection
@@ -154,7 +150,7 @@ public WebApplication Build()
154150
});
155151

156152
// Run the other callbacks on the final host builder
157-
_deferredHostBuilder.RunDeferredCallbacks(_hostBuilder);
153+
Host.RunDeferredCallbacks(_hostBuilder);
158154

159155
_builtApplication = new WebApplication(_hostBuilder.Build());
160156

src/DefaultBuilder/test/Microsoft.AspNetCore.Tests/WebApplicationTests.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
using Microsoft.Extensions.DependencyInjection;
1818
using Microsoft.Extensions.Hosting;
1919
using Microsoft.Extensions.Logging;
20-
using Microsoft.Extensions.Logging.Console;
2120
using Microsoft.Extensions.Options;
2221
using Xunit;
2322

0 commit comments

Comments
 (0)