2011-11-29 134 views
1

我在IIS 5.0(Windows 2000服務器)中有一個asp.net應用程序,我的應用程序正在使用Windows身份驗證,我已將超時設置爲120分鐘。假設用戶從11:00開始工作,並且用戶正在應用該應用程序,但是在約2小時即約13:00之後,即使用戶正在處理該會話,該會話也意外超時。我將超時修改爲300分鐘,現在會話保持活動狀態約5小時,即使用戶仍在工作,也意外斷開連接。 我有如下web.config文件。ASP.NET會話超時意外

<authentication mode="Windows"/> 
<sessionState timeout="120"> 

還在相同的120分鐘的虛擬目錄屬性中檢查了asp.net會話超時。

任何教導或解決方案將是非常有益的。

+0

120分鐘2小時 - 所以定義「用戶正在處理它」,會話應該在每次有回傳時重置,以便用戶做一些回傳到服務器的內容?這似乎是一個明顯的問題,但我有用戶離開頁面大大超過20分鐘(默認會話超時),並感到驚訝,當他們回來時它不工作... – Murph

+1

任何機會,某事正在修改web.config/bin目錄導致應用程序回收? – InSane

+0

你在共享主機上嗎?例如。如果在一段時間內沒有任何事情發生,discountasp會讓您的應用程序進入睡眠狀態 – Pleun

回答

1

超時在我的情況是因爲當用戶意外斷開會話沒有被正確地結束。當用戶下一次連接時導致一些超時問題。正常關閉會話後,它工作正常

0

您是否檢查應用程序池超時?

IIS -> application pools -> select pool -> Advanced settings -> section "process model" => Idle Time-out(minutes) 
+0

IIS 5沒有應用程序池。您必須在web.config文件中執行該配置。 –

1

如果您使用的是InProc會話狀態模式下,所有會話信息可以在任何時候丟失不管,如果應用程序池被回收的超時參數,可以在任何時間出於不同的原因發生的。

如果可以,我會更改爲「超出處理會話狀態」模式之一。

檢查這些鏈接:

asp.net inproc vs out of proc performance

http://www.hanselman.com/blog/TroubleshootingExpiredASPNETSessionStateAndYourOptions.aspx

+0

我正在使用IIS 5.0,裏面沒有應用程序池,回收還會發生嗎? – Arvind

+0

沒關係,asp.net工作進程經常被回收。 – Icarus

0

有這個相同的問題。我的情況下wasnt的timout中的sessionState

<sessionState mode="InProc" timeout="5" /> 

它形式超時

<authentication mode="Forms"> 
    <forms loginUrl="~/" slidingExpiration="true" timeout="5" /> 
</authentication> 

我設置在形式爲120(2小時)的超時,其工作

<authentication mode="Forms"> 
    <forms loginUrl="~/" slidingExpiration="true" timeout="120" /> 
</authentication>