关于如何使用IRegisteredObject检测应用程序何时关闭存在一些问题。但是,在所有活动请求完成之前,不会调用 IRegisteredObject.Stop。
长时间运行的请求(pushlet、长轮询、Web 套接字)就是这种情况,这意味着应用程序池回收可能会被这些请求无限期地拖延。
有没有办法从长时间运行的请求中检测到应用程序关闭正在挂起?
我已经使用 IRegisteredObject 或轮询 HostingEnvironment.ShutdownReason 进行了测试。在活动请求完成之前,两者都不起作用。
Katana/Owin 项目访问内部 System.Web.Hosting.UnsafeIISMethods.MgdHasConfigChanged 方法来检测关闭,以便长时间运行的请求可以检测到此状态。
有关示例实现,请参阅ShutdownDetector和UnsafeIISMethods 。
| 归档时间: |
|
| 查看次数: |
1390 次 |
| 最近记录: |