2008-11-02 87 views
1

下面是一個問題,我問我的博客上幾個月回來,但我還沒有得到正確的答案。然後,前兩天有人問我,如果我有答案,所以我決定把這個問題複製在這兒,它會得到通過願以和開發人員能夠更加暴露。不管怎麼說,這裏去...如何在Aspx頁面上使用AJAX Web控件時處理會話超時?


我一直在努力,它利用AJAX Control Toolkit控制來擴展應用程序的可用性的ASP.NET Web應用程序。此外,該應用程序是一個嚴格的業務應用程序,需要安全性,包括加密,身份驗證和授權。 HTTP會話是一個InProc模式會話,默認時間爲20分鐘。

當然,這意味着,如果用戶離開網頁上他的瀏覽器時間超過20分鐘的會話已過期,任何後回服務器將瀏覽器重定向到登錄頁面。但是,如果頁面,例如,包含來自AJAX Control ToolkitAutoCompleteExtender控制,用戶可以回到自己的瀏覽器,並開始使用擴展的功能,要求現場回調的背後,卻會發現,控制根本不起作用 - 沒有錯誤不重定向到登錄頁面!?


就像我說的,我沒有一個解決方案,因此我最終把SessionExpiredMonitor(杜林Ziffer)我所有的頁面(在我的母版),這將導致在每一頁自動簽署了19個分鐘,然後將瀏覽器重定向到登錄頁面。但是,我不認爲這是一個解決方案,所以如果你能弄清楚這一點,請讓我知道。非常感謝你。

回答

1

在服務器端則可以檢測到會話過期,並返回一個強類型的異常。在瀏覽器端,您可以專門檢測該錯誤並只刷新頁面。這假設當您的頁面回覆刷新時,您的應用程序檢測到過期的會話並讓他們再次登錄。

0

這有什麼錯將用戶重定向到登錄頁面後,他居然會過期?從用戶的角度來看,我確實更喜歡這樣做,而不是通知過期的會話,填寫的方式太長,實際上注意到提交到期。 它至少是一個用戶友好的解決方案。

0

我認爲自動重定向是最好的解決方案,主要是出於明顯的安全原因。

你可以進一步警告他們閒置的18mns後顯示警告用戶其會話將在1分鐘內到期,提供通過點擊一個按鈕,接着調用後端延伸會話的方式擴展功能頁面來恢復會話。

在會話過期之前,頁面會將用戶重定向到登錄頁面,您可以保存用戶/頁面/帳戶的狀態,以便當他們重新登錄時可以將其重定向回上次查看的頁面。