检测asp.net应用程序在长时间运行请求期间何时关闭

时间:2013-02-27 17:17:48

标签: asp.net iis-7.5

关于如何使用IRegisteredObject检测应用程序何时关闭,存在一些问题。但是,在所有活动请求完成之前,不会调用IRegisteredObject.Stop。

长期运行请求(小插件,长轮询,Web套接字)就是这种情况,这意味着这些请求可以无限期地阻止应用程序池回收。

有没有办法从长时间运行的请求中检测到应用程序已关闭?

我已经使用IRegisteredObject测试或轮询HostingEnvironment.ShutdownReason。在活动请求完成之前,两者都不起作用。

1 个答案:

答案 0 :(得分:3)

Katana / Owin项目访问内部System.Web.Hosting.UnsafeIISMethods.MgdHasConfigChanged方法以检测关闭,以便长时间运行的请求可以检测到此状态。

请参阅ShutdownDectectorUnsafeIISMethods了解示例。