[.NET 6] IHostedService 的呼叫等等我的爱——等待Web应用准备就绪
💡
原文中文,约8000字,阅读约需19分钟。
📝
内容提要
介绍了等待 ASP.NET Core 应用程序启动的方法,包括使用 IHostApplicationLifetime 接口和 TaskCompletionSource,在后台服务中等待应用程序启动,并查找应用程序侦听的 URL。
🎯
关键要点
- 本文介绍如何等待 ASP.NET Core 应用程序启动,特别是在使用 IHostedService 和 BackgroundService 时。
- 在多个 IHostedService 启用的情况下,可能会出现背景任务比 Web 应用启动更快的现象。
- 可以通过 IServer 和 IServerAddressesFeature 获取 ASP.NET Core 应用程序正在侦听的 URL。
- 在 .NET 6 中,IHostedService 的启动顺序与之前版本有所不同,Kestrel 现在在所有其他服务之后启动。
- IHostApplicationLifetime 接口提供了应用程序生命周期的通知,包括应用启动、停止和已停止的状态。
- 可以使用 IHostApplicationLifetime 的 ApplicationStarted 属性来等待应用程序启动。
- 通过使用 TaskCompletionSource,可以优雅地等待应用程序启动,而不需要轮询。
- 在处理应用程序启动时,需考虑到可能的启动失败情况,并使用 CancellationToken 进行优雅处理。
- 提供了一个 WaitForAppStartup 方法来简化等待应用程序启动的逻辑。
➡️