2012-02-24 88 views
0

我在web.config文件中設置了sessiontimeout,如下所示。會話在超時之前過期

<sessionState timeout="120" 
     cookieless="false" 
      mode="InProc" 
     /> 

有些時候上面的代碼工作正常。但多次會話過後自動10到15分鐘過期。

這個錯誤存在於每個瀏覽器中。

當我運行相同的應用程序使用.net在我的本地計算機上工作正常。

請注意,我還沒有創建global.ascx文件。

+0

global.ascx不會因這個原因而發生變化..只是爲了處理事件。它不會發生,但仍然可以嘗試在IIS中更改會話時間。實際上第一個pref是Web.config,如果沒有在配置文件中設置,那麼它將使用IIS。 – 2012-02-24 11:00:48

+0

您是否在談論生產服務器?你使用什麼Web服務器應用程序? IIS? – Vedran 2012-02-24 14:33:01

回答

5

當應用程序回收時,會話也將被重置。當你改變站點中的某些內容時會發生這種情況,比如更改「bin」文件夾中的任何內容或修改「web.config」文件。

此外,IIS可能會停止或回收它認爲目前未使用的應用程序。

您確定要將所有內容保留在內存中兩個小時,即使在用戶離開後?保持會話活躍的更好方法是使用一些常規(每幾分鐘)的AJAX回調。搜索「會話保持活着asp.net ajax」。

+0

感謝您的回覆,但會話過期時,用戶在網站上激活 – 2012-02-24 11:44:23

+0

@UndSatardekar - 您的意思是「請求頁面」還是「忙於填寫一個表單」? IIS和ASP.Net只記錄請求並且不能看到用戶在他/她的瀏覽器中仍然有頁面。 「保持活躍」將有助於告訴IIS/ASP.Net用戶仍然很忙。 – 2012-02-24 12:35:39

1

您是否驗證了應用程序結束時的會話超時?做一個Session.Timeout的response.write。這個值可以在幾個地方設置。

你怎麼知道用戶正在活動?如果他僅輸入文本,滾動和/或讀取的時間長度超過超時值,會話將超時。瀏覽器必須調用一個HTTP請求到服務器來重置計時器。

正如漢斯所提到的,設置爲以間隔運行以訪問最小Web內容的後臺腳本「pinger」將有所幫助。

考慮,我要開始另一個Web應用程序,我似乎需要添加此功能,大部分的網絡應用,我的靈感來創建一個小包裝所謂讓我活着來加速這一進程中未來。你可以在這裏找到它: http://kma.codeplex.com/

希望它有幫助!