2011-11-06 49 views
2

在ASP.NET網站中,我們正在將會話存儲在SQL Server中。所有工作都很好,除了會議經常回收。我的暫停時間設置爲30分鐘,但有時會在幾分鐘內回收。我們有一個專用的服務器,以及運行在「經典」應用程序池下的網站。我在這個問題上搜索了很多,但沒有找到滿意的答案。任何幫助將不勝感激。ASP.NET Session Recycles

注:大多數情況下,它發生在有很多viewstate的使用的頁面,我很好奇,有一個視圖狀態與會話回收的鏈接?

+0

你的session-state-sql-database在哪裏以及如何運行? – stefan

回答

2

當我們有一個Web場(多個Web服務器爲客戶端服務)或一個Web花園(應用程序池中有多個工作進程)時,我們遇到過這個問題。

如果您有一個Web場,那麼您需要確保所有Web服務器都有the same machine key,並且所有實例都有exact same application path

如果您有網絡園區,請嘗試將最大工作進程刪除回1以查看是否可以解決問題。

在檢查IIS設置時,您應該也可以確保應用程序池不會定期回收。這可能是由於下列任何一種在應用程序池爲:

1)專用空間限制(如有的最大內存量已經超過了應用程序池復位)

2)一定時間間隔回收(應用程序池將在指定的分鐘數後,默認爲1740年和/或在特定時間自動回收)。

3)空閒超時(在應用程序池自動關閉之前可以經過的非活動時間的分鐘數)。

您還應該檢查事件日誌以瞭解應用程序池崩潰或以其他方式被回收的報告。

更新:

另外一個想法:

如果你有一個應用程序,如防病毒軟件或備份軟件,監視你的應用程序的bin目錄下,並修改或更改屬性(如備份標誌或時間戳)的文件或該web.config文件,這也會導致應用程序回收。

+0

對不起,我忘了提及,我們沒有使用網絡農場或網絡花園..並且最大工作進程已經設置爲1.專用內存限制爲0KB(默認情況下),我也設置空閒超時爲0 。 – OBA

+0

更新的答案還有一個額外的想法 –