为什么我要 运行 ConfigureWebHostDefaults 之后的 ConfigureServices 而不是使用启动的 ConfigureServices
Why should I run ConfigureServices after ConfigureWebHostDefaults instead of using the ConfigureServices of the startup
我正在阅读 msdn 的文档。我想知道为什么在 ConfigureSerivices
或启动 ConfigureServices
方法中注册 IHostedService 之间有什么区别。
我一直在寻找差异,但似乎找不到。有人知道吗?
Program.cs
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.ConfigureServices(services =>
{
services.AddHostedService<VideosWatcher>();
});
Startup.cs
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void ConfigureServices(IServiceCollection services)
{
services.AddHostedService<VideosWatcher>();
}
在第二个示例中,托管服务在 Web 主机之前 运行。如果它需要容器中尚不可用的东西,就会出现错误。 尽管如此,这是大多数情况下的通用方法。
在第一个示例中,托管服务 运行 在 Web 主机启动后(在 kestrel 启动后),因此一切都可用。
文档对其进行了解释 here。
我正在阅读 msdn 的文档。我想知道为什么在 ConfigureSerivices
或启动 ConfigureServices
方法中注册 IHostedService 之间有什么区别。
我一直在寻找差异,但似乎找不到。有人知道吗?
Program.cs
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.ConfigureServices(services =>
{
services.AddHostedService<VideosWatcher>();
});
Startup.cs
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void ConfigureServices(IServiceCollection services)
{
services.AddHostedService<VideosWatcher>();
}
在第二个示例中,托管服务在 Web 主机之前 运行。如果它需要容器中尚不可用的东西,就会出现错误。 尽管如此,这是大多数情况下的通用方法。
在第一个示例中,托管服务 运行 在 Web 主机启动后(在 kestrel 启动后),因此一切都可用。
文档对其进行了解释 here。