我有一個Web項目設置,它具有我的WebForms和一個WCF服務。我遇到了一個問題,那就是我的應用程序似乎經常回收並丟失所有單例對象和會話值。它似乎不是超時問題,但可能是某種內存泄漏。我們可以使用應用程序一分鐘左右,然後砰的一聲就失去了一切。ASP.NET應用程序池回收問題
我已經嘗試監視目錄中的更改,但根本沒有發現文件系統發生任何更改。我還在Application_Error中放置了一個斷點,並且沒有引發錯誤。
我一直在谷歌搜尋兩天試圖解決這個問題。該應用程序是以前正在工作的項目的直接重複。我注意到的一點是不同的是,我使用nHibernate作爲後端,並且我轉而使用Linq轉換爲SQL。我注意到我沒有正確處理DataContext,因爲我在我的服務調用中調用了DataContext的實例,並在處理或設置上下文之前返回一個值,所以我認爲它可能沒有關閉。我試着不是將datacontext存儲在我的「repository」類中,而是將它存儲在operationcontext中,並將它顯式地放置在Application_EndRequest上。這仍然沒有解決這個問題。
任何人有任何建議或地方我應該看看?
**更新**:我相信我發現我的問題。我有使用EntitySet的對象,我直接使用序列化的IList屬性將這些對象序列化,返回列表。當我試圖顯式處理我的datacontext在返回數據之前,我正在運行的問題序列化這些EntitySet的,因爲datacontext不再是活動的。我將嘗試將數據複製到具有常規列表而不是EntitySet的新空白對象中,並查看是否允許我正確關閉數據環境並解決問題。
只是一個簡單的問題:上面的應用程序只有一個使用該應用程序池,還是與另一個應用程序共享池? – Dimitri 2011-05-09 21:20:55
我假設你已經遇到過這個問題:[你的應用程序池可能會意外回收的常見原因](http://blogs.msdn.com/b/johan/archive/2007/05/16/common-reasons-why -your-application-pool-may-unexpectedly-recycle.aspx) – R0MANARMY 2011-05-09 21:57:23
它是共享主機還是你自己的網絡服務器? – 2011-05-10 07:27:02