我在web.config文件中設置了sessiontimeout,如下所示。會話在超時之前過期
<sessionState timeout="120"
cookieless="false"
mode="InProc"
/>
有些時候上面的代碼工作正常。但多次會話過後自動10到15分鐘過期。
這個錯誤存在於每個瀏覽器中。
當我運行相同的應用程序使用.net在我的本地計算機上工作正常。
請注意,我還沒有創建global.ascx文件。
我在web.config文件中設置了sessiontimeout,如下所示。會話在超時之前過期
<sessionState timeout="120"
cookieless="false"
mode="InProc"
/>
有些時候上面的代碼工作正常。但多次會話過後自動10到15分鐘過期。
這個錯誤存在於每個瀏覽器中。
當我運行相同的應用程序使用.net在我的本地計算機上工作正常。
請注意,我還沒有創建global.ascx文件。
當應用程序回收時,會話也將被重置。當你改變站點中的某些內容時會發生這種情況,比如更改「bin」文件夾中的任何內容或修改「web.config」文件。
此外,IIS可能會停止或回收它認爲目前未使用的應用程序。
您確定要將所有內容保留在內存中兩個小時,即使在用戶離開後?保持會話活躍的更好方法是使用一些常規(每幾分鐘)的AJAX回調。搜索「會話保持活着asp.net ajax」。
感謝您的回覆,但會話過期時,用戶在網站上激活 – 2012-02-24 11:44:23
@UndSatardekar - 您的意思是「請求頁面」還是「忙於填寫一個表單」? IIS和ASP.Net只記錄請求並且不能看到用戶在他/她的瀏覽器中仍然有頁面。 「保持活躍」將有助於告訴IIS/ASP.Net用戶仍然很忙。 – 2012-02-24 12:35:39
您是否驗證了應用程序結束時的會話超時?做一個Session.Timeout的response.write。這個值可以在幾個地方設置。
你怎麼知道用戶正在活動?如果他僅輸入文本,滾動和/或讀取的時間長度超過超時值,會話將超時。瀏覽器必須調用一個HTTP請求到服務器來重置計時器。
正如漢斯所提到的,設置爲以間隔運行以訪問最小Web內容的後臺腳本「pinger」將有所幫助。
考慮,我要開始另一個Web應用程序,我似乎需要添加此功能,大部分的網絡應用,我的靈感來創建一個小包裝所謂讓我活着來加速這一進程中未來。你可以在這裏找到它: http://kma.codeplex.com/
希望它有幫助!
global.ascx不會因這個原因而發生變化..只是爲了處理事件。它不會發生,但仍然可以嘗試在IIS中更改會話時間。實際上第一個pref是Web.config,如果沒有在配置文件中設置,那麼它將使用IIS。 – 2012-02-24 11:00:48
您是否在談論生產服務器?你使用什麼Web服務器應用程序? IIS? – Vedran 2012-02-24 14:33:01