- The goal here is to enable components that use hosting abstractions to use
the web host. It lets us start to decouple components from the web host abstractions
where possible while not breaking any existing components. This will allow things
to work in both the generic host and the web host. The one snafu is the WebHostBuilderContext
which has an IHostingEnvironment typed as the AspNetCore.Abstractions type.
- Updated tests.
#1218
- Renamed the type to IHostedService and added Start and Stop.
- Split up the IHostedService execution and IApplicationLifetime to avoid
circular references
- Trigger IHostedService.Start after starting the server
- Trigger IHostedService.Stop before disposing the service provider
#895#894
- Introduce a new DI friendly API for handling lifetime events. IApplicationLifetime isn't
isn't replaceable so we introduce a new DI friendly API that can be implemented to handle
lifetime events of an ASP.NET application. It should also make it possible to write up extension
on IWebHostBuilder to wire up to external systems that need to register the state of the application (like systemd).
- Run all handlers even if one throws
- Let both sets of event handlers run before throwing (IApplicationLifetimeEvents and IApplicationLifetime cancellation token callbacks).
- Remove IStartupLoader and add `IStartup` instead that matches the signature hosting cares about
- Moved `UseStartup` to extension methods
- Move existing logic into `ConventionBasedStartup` class
- This change removes the indirection and between the IServerLoader and
the IServerFactory. We now add the IServerFactory directly to the DI
container and resolve it from there.
- Moved logic that resolves IServerFactory from an assembly to a static
helper