我需要知道,因爲我必須顯式關閉與用戶會話相關的一些遠程資源。IIS6:當應用程序池被回收時,Session_End是否被調用?
回答
我必須不同意達林。我在Session_End中調用一個函數來記錄會話結束。我沒有明確地測試過,但是我最近幾次查看了我的日誌,發現應用程序池已被回收。函數被調用並且活動會話的結束被記錄。
這發生在應用程序池按計劃回收以及由於部署了一些新dll而回收時。
如果我記得正確(自從我閱讀文檔以來有一段時間),具有活動會話將延遲正常的應用程序池回收計時器(當資源應該被釋放時觸發),因爲活動會話上的服務器銀行意味着存在繼續需要。一旦會話過期(並觸發session_end事件),應用程序回收計時器將重新開始計數並最終在線程池釋放自己的資源並終止應用程序之前觸發。
這就是在正常情況下,應該注意的是,session_end事件不保證被觸發(在那裏使用非常具體的情況下它不會),我想現在這主要與IIS的崩潰實例有關或應用程序池回收OOM或錯誤。它用於除非你只使用其中一種會話類型(我相信狀態服務器)它不會可靠地觸發。現在可能會有所不同。
如果你需要保證資源被釋放,我不確定session_end是做它的合適的地方。你可以將它提升到應用緩存或HTTP緩存,並使用定期清理事件的會話唯一密鑰?這可能更可靠(更多的代碼),但更可靠。
這一直是我認爲Session_End中大火相當可靠的一般經驗,但我已經看到了失敗的大負載下(點擊第二的100S),我知道,當你開始談論服務器農場它變得複雜得多爲好。
我只說最多20-30個用戶,但是打開連接的開銷非常高,我不信任遠程服務器關閉它。 – 2010-03-29 22:30:07
還要注意,只有在使用Inproc會話模式時纔會調用Session_End。對於其他模式(包括SQL會話狀態模式),此事件永遠不會發生。
- 1. 當應用程序池在IIS中回收時,是否調用了Application_End?
- 2. 回收應用程序池
- 3. 安裝應用程序時是否有IOS通知或回調被調用?
- 4. 回收應用程序池作爲應用程序池標識
- 5. 檢查IIS應用程序池是否爲空(C#/ IIS6)
- 6. 當應用程序更新時,NSUserDefaults是否會被擦除?
- 7. IIS6應用程序池崩潰
- 8. IIS6 asp.net 4.0應用程序池
- 9. IIS6應用程序池狀態
- 10. 當SetupDiGetDeviceInterfaceDetail被調用時,程序崩潰
- 11. 強制應用程序的最佳方式什麼時候應用程序池被回收?
- 12. 訪問應用程序池被拒絕
- 13. 當應用程序被刪除時,與應用程序關聯的共享首選項是否被刪除?
- 14. 當被遠程ajax調用時是否可以使用redirect_to?
- 15. Sharepoint Excel Services回收應用程序池
- 16. IIS應用程序池回收
- 17. 應用程序池回收併發症
- 18. Sitecore - 無應用程序池回收
- 19. IISExpress應用程序池回收
- 20. 擴展web.config應用程序池回收
- 21. 通過WiX回收應用程序池
- 22. PollingDuplexHttpBinding和應用程序池回收
- 23. ASP.NET應用程序池回收問題
- 24. IIS6應用程序池憑據導致網站說「訪問被拒絕」
- 25. 使用Selfhosting ASP.NET應用程序回收應用程序池
- 26. 超時/間隔ID是否被回收?
- 27. 使用PowerShell回收IIS應用程序池:「異常調用回收」
- 28. 當Z3_ast對象被刪除時是否有可用的回調?
- 29. 編輯要求IIS6中的SSL導致應用程序池回收?
- 30. 當應用程序被殺/被刷出時FCM推送通知未收到
同意,剛剛測試過,它發射:-) – 2010-03-29 18:57:31