CreateHostBuilder(args).Build().Run();
1.
Host.CreateDefaultBuilder().ConfigureWebHostDefalut(wb=>{wb.UseStartup<Startup>()});
1. Host.CreateDefaultBuilder() 这一步,创建 Builder,并在 这个里面 进行一系列配置:
配置只是委托,还没有真正执行,这个配置加载 了 appconfig.json 等。
这一步还是最通用的Host
public static IHostBuilder CreateDefaultBuilder(string[] args)
{
HostBuilder builder = new();
return builder.ConfigureDefaults(args);
}
2.ConfigureWebHostBUilder,这一步是对HostBUilder 的进一步配置,把这个BUilder配成有生成WebHost 的能力。
这里面会有BUilder.ConfigureService(()=>{service.AddHostedService<GenericWebHostService>()});
3.BUild(), 这一步 会把上面的配置执行,生成一个IHost
public interface IHost : IDisposable
{
IServiceProvider Services { get; }
Task StartAsync(CancellationToken cancellationToken = default);
Task StopAsync(CancellationToken cancellationToken = default);
}
4. 这个Build() 的时候,会创建 根容器
private void CreateServiceProvider()
{
var services = new ServiceCollection();