檢測

2013-02-27 14 views
2

已經有關於如何當一個應用程序被關閉使用IRegisteredObject發現一些問題。但是,IRegisteredObject.Stop在所有活動請求完成之前不會被調用。檢測

這將是長時間運行的請求(pushlet,長輪詢,網絡插座),這意味着一個應用程序池回收可以通過這些請求無限期持股待漲的情況。

有沒有辦法從一個長期運行的請求的應用程序關閉正在等待檢測?

我已經使用IRegisteredObject或輪詢HostingEnvironment.ShutdownReason測試。在活動請求完成之前,兩者都不能工作。

回答

3

Katana/Owin項目訪問內部System.Web.Hosting.UnsafeIISMethods.MgdHasConfigChanged方法來檢測關閉,以便長時間運行的請求可以檢測到此狀態。

樣品實施見ShutdownDectectorUnsafeIISMethods

+0

但是,這並不起作用。 – 2014-01-16 09:13:20

+1

如果您使用的是.NET 4.5.1,則需要鎖定到HostingEnvironment.StopListening事件。武士刀已經更新ShutdownDetector這樣做 - https://github.com/projectkudu/kudu/commit/3fd87282cf041cc10970463707b4cdae62e4c0b3 – Snixtor 2014-04-24 23:44:48