2012-01-18 23 views
4

我們在生產環境中遇到了一個奇怪的現象,應用程序每隔幾個小時就會通過結束與Session_End事件的會話來觸發所有用戶,並觸發Application_End事件。 在我們的日誌中,所有用戶的會話都在同一個毫秒內關閉。 我們在我們的測試環境中遇到過這個問題,但只有在極少數情況下,我們不能複製這個。 其他一切似乎都很好,運行在此服務器上的其他應用程序工作正常,沒有內存泄漏或CPU過度使用。該應用程序基於ExtJS 3.3版,NHibnernate 3.2和ASP.NET 4.0。 它看起來不像是一個超時錯誤,有些用戶只在會話結束前幾分鐘工作。 有沒有人遇到過類似的問題?終止所有會話,然後是應用程序結束事件

+2

是應用程序池回收? – 2012-01-18 13:21:04

回答

5

應用程序池回收(並因此結束所有打開的會話並結束應用程序)有幾個原因。有關完整的概述,請參閱http://blogs.msdn.com/b/johan/archive/2007/05/16/common-reasons-why-your-application-pool-may-unexpectedly-recycle.aspx

我們曾經在生產環境中遇到類似的問題。回收的原因是在每次掃描時觸及web.config的病毒掃描程序,這使得應用程序池回收。嘗試禁用服務器上的病毒掃描程序或排除病毒掃描程序中的應用程序目錄。

改變下列文件也會觸發應用程序池的立即重啓:

  • 的web.config
  • 的machine.config
  • Global.asax的
  • 任何bin目錄,或者它子目錄

此文章:http://weblogs.asp.net/scottgu/archive/2005/12/14/433194.aspx爲您提供了一種方法來捕捉應用程序結束事件與更詳細的記錄。這可能會幫助您找到回收的原因。