2009-06-04 275 views
3

我的一些傳統節目之前ASP會話過期使用ASP(不ASP.Net),即使我設置長會議上(在數分鐘如)到期時間,例如20分鐘,有時在很短的時間我仍然會注意到會話過期錯誤框–超時設置

「太多空閒時間,請重新登錄。」

任何想法,進一步分析?不知道這是我的代碼錯誤還是服務器(瀏覽器)配置問題,因爲並非所有的客戶端/服務器組合都遇到了這個奇怪的問題。

<% 
    if session("timeToken") = "" then 
%> 

<script language = "JavaScript"> 
<!-- 
window.alert ("too much idle time, please login again"); 
//--> 
</script> 
<% 
response.End() 
end if 
%> 
+1

你提供的代碼在哪裏?如果它是客戶端的javascript/vbscript,你不應該能夠獲得會話變量,並且如果它是服務器端,你不應該能夠做出警報... – Damovisa 2009-06-04 10:35:35

+0

@Damovisa,我發佈了我的代碼。任何想法有什麼不對? – George2 2009-06-04 10:36:35

+1

Gotcha - 我刷新了,你已經更新了代碼:) – Damovisa 2009-06-04 10:37:03

回答

1

根據您的更新一對夫婦的想法:

  1. 難道還有其他原因,你session("timeToken")可能是空

    會話過期箱由我的代碼引發的?另一塊代碼在某處或可能是變量在某處被拼寫錯了?

  2. 如何在你的代碼session("timeToken")變化的實際價值?會話開始時是否設置?是否定期更新?它存儲什麼價值?

你寫的代碼,似乎要被罰款,所以如果它不是一個代碼問題它很可能會成爲一個真正的會話問題......只是有些事情首先要檢查。

更新:

  • ASP會話狀態使用Cookie一般維持 - 你能檢查客戶端啓用了餅乾?
  • 是ASP應用程序通過多臺服務器提供服務?如果它被從Web場或羣集服務,你需要確保會話狀態可以在機器或用戶的會話是「粘」堅持 - 也就是說,它總是由同一個服務器提供服務。

更多信息和幫助可以在這裏找到:http://msdn.microsoft.com/en-us/library/ms972338.aspx

+0

你是什麼意思「2.會話(」timeToken「)的實際值如何改變?」 - 在什麼情況下會自動改變我的代碼? – George2 2009-06-04 10:47:16

+0

如果您能讓我知道任何會影響會話過期的來自IIS或OS或瀏覽器端的設置,請致以欣賞! – George2 2009-06-04 10:49:59

1

這可能是您的應用程序SEESION超時IIS限制。

試試這個:

  1. 右鍵單擊您的應用程序文件夾中的IIS
  2. 然後去屬性 - >虛擬目錄選項卡 - >然後在右下角
  3. 配置按鈕如果是禁用,然後創建應用程序首先單擊按鈕創建
  4. 在配置窗口下單擊選項選項卡,您會發現SESSION TIMEOUT默認設置爲20(分鐘)

希望這是對你的祈禱aswer :)

1

檢查您的應用程序運行在您的應用程序池不回收由於某種原因。例如,它是否具有更積極的空閒超時(在測試場景中,您可能是唯一使用該應用程序的用戶,因此您不使用它不僅構成空閒會話而且是空閒應用程序)。

應用程序池可以配置的各種不同的原因將觸發回收。

檢查事件日誌,當你有一個未接受的超時時間,在那裏看起來不尋常嗎?