2011-05-06 138 views
5

嘿,我有以下線在我的web.configASP.NET爲什麼會話超時,超時SessionState的設置

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

而且我認爲他會保持會話保持不變45分鐘

但是我有看到的情況下,如果用戶不活動,讓說15分鐘會話超時。

我該如何解決這個問題?

編輯:剛纔注意到我在母版頁以下行

元HTTP的當量= 「刷新」 內容= 「1800; URL = HTTP://www.virtualacademy.ie/login.aspx」 >

也許這是造成問題,什麼是您使用的表單驗證上述行做即數1800

回答

5

如果用戶關閉瀏覽器或清除cookie,或者服務器上的AppDomain被回收,會話狀態將會丟失。

您是否檢查過日誌以查看該應用是否正在回收?

+0

它不通過關閉瀏覽器或清除cookie。我應該更好地描述這種情況。基本上用戶必須觀看一段可以長達20分鐘的視頻,無論什麼時候他們看完電影后,似乎都會計時。我正在使用名爲blacknight的託管服務,聲名顯赫我不知道關於回收 – StevieB 2011-05-06 14:38:37

0

?它有自己的超時設置,即使到期時將用戶重定向到登錄頁面,即使他們的會話仍然有效。

+1

他沒有說任何關於登錄;他正在談論會議狀態被清除......不是嗎? – 2011-05-06 14:36:13

+0

不使用表單身份驗證 – StevieB 2011-05-06 14:36:47

3

如果sessionStateInProc,AppDomain回收是非常常見的問題。建議使用StateServerSQLServer代替生產系統。請參閱Session-State Modes瞭解如何使用每種類型的文檔以及三種不同類型的優缺點。

就個人而言,我們使用SQL Server,如果我們必須爲Web服務器農場 - 較慢但可以共享。如果站點僅託管在單個Web服務器上,我們使用狀態服務器 - 狀態在AppDomain重新啓動後仍然存在,但不是整個服務器重新啓動。

此外,過去我們在後臺使用AJAX後臺,而用戶正在觀看長時間運行的視頻或執行長時間的客戶端任務,因此會話超時每隔幾分鐘就會重置一次。這段代碼沒有什麼特別之處 - 每隔幾分鐘一點點JavaScript就會有一些ASPX頁面不返回任何內容。

14

一定要檢查你的IIS配置,因爲你的站點託管的應用程序池也有它自己的超時值,它將覆蓋你自己的.config。

爲了增加它,

  1. 打開IIS
  2. 選擇應用程序池左側
  3. 選擇通過您的網站使用的應用程序池
  4. 選擇高級設置
  5. 在過程模型categtory將「空閒超時」值增加到所需的長度。

希望這會有所幫助。

(如果你沒有一個專門的服務器/訪問您的託管服務提供商IIS,你將不得不與他們聯繫,看看他們是否能增加爲你)

+0

最大允許時間大約是1740分鐘= 29小時。 – 2016-04-27 14:34:26

+0

@t_plusplus「空閒超時」允許的最大數量爲* 43200 *,但該值需要爲<='常規時間間隔'的值,默認爲1740分鐘。 – 2016-12-08 22:15:49

+0

超時屬性不能設置爲大於525,600分鐘(1年)的值 https://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.timeout(v=vs.110 )的.aspx – 2018-01-28 00:06:51