【问题标题】:Detect when asp.net application is shutting down during long running request在长时间运行的请求期间检测 asp.net 应用程序何时关闭
【发布时间】:2013-02-27 17:17:48
【问题描述】:

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

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

有没有办法从长时间运行的请求中检测到应用程序关闭处于挂起状态?

我已经使用 IRegisteredObject 或轮询 HostingEnvironment.ShutdownReason 进行了测试。在活动请求完成之前,两者都无法工作。

【问题讨论】:

    标签: asp.net iis-7.5


    【解决方案1】:

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

    请参阅ShutdownDectectorUnsafeIISMethods 了解示例实现。

    【讨论】:

    • 如果您使用的是 .NET 4.5.1,您需要锁定 HostingEnvironment.StopListening 事件。 Katana 已经更新了 ShutdownDetector 来做同样的事情 - github.com/projectkudu/kudu/commit/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 2017-12-07
    相关资源
    最近更新 更多