- This adds an implementation of IWebHostBuilder as a facade over the IHostBuilder.
This removes the 2 container issue by executing the Startup.ConfigureServies and Startup.ConfigureContainer inline as part of building the IHostBuilder.
- The implementation is highly compatible implementation since it exposes the same IWebHostBuilder interface.
Existing extensions mostly work.
- There are some caveats with this approach.
- Injecting services into Startup is not extremely constrained to the
services availble on HostBuilderContext. This includes the IHostingEnvironment
and the IConfiguration.
- IStartup is broken when using this pattern because it isn't composable.
- The IStartupConfigureServicesFilter and IStartupConfigureContainer The before
and after filters added in 2.1 are also broken because there's a single container (it could maybe be fixed by downcasting and doing something specific on the GenericHostBuilder instance).
- Calling into IWebHostBuilder.Build will throw a NotSupportedException since
this implementation is just a facade over the IHostBuilder.
|
||
|---|---|---|
| .. | ||
| Fakes | ||
| Internal | ||
| testroot | ||
| ConfigureBuilderTests.cs | ||
| HostingApplicationTests.cs | ||
| HostingEnvironmentExtensionsTests.cs | ||
| Microsoft.AspNetCore.Hosting.Tests.csproj | ||
| RequestServicesContainerMiddlewareTests.cs | ||
| StartupManagerTests.cs | ||
| WebHostBuilderTests.cs | ||
| WebHostConfigurationsTests.cs | ||
| WebHostTests.cs | ||