2

我爲我們公司的用戶構建了一個內部應用程序。用戶不活動後沒有超時,也不需要一個。用戶抱怨說,在一段時間(如30分鐘)不活動之後,如果開始再次使用它,則Web應用程序開始動作。按鈕不起作用,組合框不會掉下來,日期選擇器被打破。我似乎很清楚,在用戶不活動期間,Javascript被禁用。經過一段時間的用戶不活動後Javascript被禁用

有沒有人遇到過這種行爲,如果是的話,我該如何預防它?

Web應用程序是一個ASP.NET MVC 3.0應用程序,使用Telerik MVC Extensions,其中包括編寫一些客戶端Ajax。它在Windows Server 2003標準版上的IIS 6.0上運行。

+1

30分鐘 - 看起來像表格,會話超時? –

+0

謝謝大家的意見。會話狀態超時是問題。我把它增加到24小時。但是,這也是使用XP的用戶的網絡連接問題。遇到網絡中斷的我網站的XP用戶發現他們無法點擊按鈕等(他們最終失去了工作,因爲他們無法保存)。他們有筆記本電腦,他們去會議,碼頭和離開,把他們的筆記本電腦帶回家等。Windows 7用戶不會遇到這個問題,當他們重新連接時,一切正常。 – SteveB

+0

等一下。我剛剛讓這些用戶使用我的開發服務器進行測試。他們根本沒有這個問題。我發現我的開發服務器上有什麼不同。我們玩弄要求客戶證書。我們將IIS中的客戶端證書設置設置爲「接受客戶端證書」。這引起了很多奇怪的客戶端行爲,它依賴於瀏覽器,操作系統組合。將其設置回「忽略客戶端證書」似乎完全消除了這個問題。我將不得不做更多的測試來確保。 – SteveB

回答

0

等一下。我剛剛讓這些用戶使用我的開發服務器進行測試。他們根本沒有這個問題。我發現我的開發服務器上有什麼不同。我們玩弄要求客戶證書。我們將IIS中的客戶端證書設置設置爲「接受客戶端證書」。這引起了很多奇怪的客戶端行爲,它依賴於瀏覽器,操作系統組合。將其設置回「忽略客戶端證書」似乎完全消除了這個問題。

1

我認爲它與會話超時有關。由於用戶丟失了自己的會話值,服務器不會接受與服務器的Ajax集成,返回用戶認爲該站點停止工作。 根據描述,如果網站在30分鐘後停止工作,並且用戶使用刷新按鈕完全重新加載頁面,則用戶將不得不再次重新登錄,因爲會話值丟失。

有幾種解決方案。

你將不得不創建一個隱藏的iframe,它重新加載自身,每10分鐘

或者

擴展會話超時時間超過30分鐘(1800秒),

或者

定期向服務器發送ajax請求以保持連接。

0

這可能是offbase-但有時會有內存泄漏,這可能會導致這種行爲。我遇到了這個問題與Gmail。在後臺運行的腳本可以做到這一點。您能確定瀏覽器在發生這種情況時使用了多少內存嗎?

0

首先,我會試着以給定的時間間隔觸發一個事件,以查看javascript是否實際上開始滯後,或者如果其他人建議的話會話超時。

在您的文檔的身體某處添加此功能:

window.onload = function() { 
    setInterval(messageLogger, 15000); 
}; 
function messageLogger() { 
    var now = new Date(); 
    console.log(now.getMinutes()); //Or now.getTime() or whatever makes the most sense to you 
} 

打開你的控制檯,監視離開頁面停用一段時間後。如果它無限期地繼續每15秒觸發一次,那麼JavaScript不會被禁用,也不會成爲JavaScript代碼的問題。那時候,我會開始考慮是否會議問題。如果您注意到日誌消息開始滯後(或停止),那麼您的JavaScript在某處存在內存泄漏。

0

JavaScript不停止運作;你的會話在某個地方超時。您網站的動態組件在向服務器的請求中失敗,因爲它們的會話Cookie不再有效;您需要找到最初設置會話的位置,並增加會話到期時間。

相關問題