2010-10-17 217 views
0

如果我將表單身份驗證超時設置爲30天(以分鐘爲單位),並且我已將會話超時設置爲5分鐘,並且我使用Cookie來保存不同的會話變量。當會話超時時,asp.net或IIS總是發出302並重定向到登錄頁面? (正在使用HTTP調試它把一個「物體移動到這裏」消息)asp.net重定向到登錄頁面

我檢查的所有網頁上的所有page_init s中的會話,因爲他們都來自一個共同的Page類繼承,如果我找到一個錯誤的會話我加載來自上面提到的cookie的會話變量。

我的問題是,誰或重定向到登錄頁面?

我已經在IIS6 & IIS7上測試過,結果相同。

我在每一個重定向語句中都加上了斷點,並且他們從未被解僱,因此我斷定別的東西正在發佈這些重定向。

進一步debbuging揭示了以下內容:

型「System.Threading.ThreadAbortException」的第一次機會異常出現在mscorlib.dll 型「System.Threading.ThreadAbortException」的異常出現在mscorlib.dll但沒有在用戶代碼處理

但我想這是很自然的,因爲它發出無論如何重定向。

回答

1

這是表單認證。如果您未通過身份驗證,則身份驗證會將您發送至登錄名。

看到:http://msdn.microsoft.com/en-us/library/ff647070.aspx

爲什麼你不能調試的原因是該窗體身份驗證接受請求進入您的代碼之前。

它也涵蓋在this文章

編輯

從上面的第二個鏈接的結尾:

問題情景:形式 認證可在 之前超時在 配置文件中設置的超時屬性值如果 認證券是man生成的 , 的超時屬性將會覆蓋配置文件中設置的值 。 因此,如果該值小於 配置文件中的值 表單身份驗證票證將 到期配置文件 超時屬性值和 反之亦然。例如,我們假設 超時屬性爲 ,在Web.config文件中設置爲30,並且 票證的過期值爲 設置爲20分鐘。在這種情況下, 表單身份驗證票將在012分鐘後過期,並且用戶 必須在此之後再次登錄。

+0

但是不應該對它進行身份驗證,因爲我正在使用BIG超時值?我如何解決這個問題? – 2010-10-17 15:28:20

+0

嘗試增加會話超時,表單身份驗證使用會話不僅僅是cookie。 – 2010-10-17 15:39:29

+0

問題是,我們因爲隨機原因獲得了空會話變量,因此我使用的cookie在持續會話變量 – 2010-10-17 15:59:42