[.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 方法来简化等待应用程序启动的逻辑。
➡️

继续阅读