2011-06-09 81 views
1

編輯登錄後ASP .NET會話重置嗎?

這個問題似乎已經奇怪地消失了。我的環境一定是有些古怪的東西。我正在投票結束這個問題。


當用戶登錄時,我用來自Login頁面代碼隱藏的一堆數據給會話充氣。然後我將用戶重定向到應用程序中的其他頁面。我還有一些會話恢復邏輯,當用戶的會話過期時,會根據身份驗證票據重新加載會話。

似乎在發生的事情是,我用來自登錄頁面的一堆數據膨脹用戶的會話,然後重定向它們,並且我重定向到的頁面請求似乎沒有會話,所以應用程序必須重新充氣。我不明白這一點 - 我查看了Cookie,會話ID沒有改變,我也沒有在代碼中的任何地方重置會話數據。這是一個ASP .NET'feauture'嗎?我正在使用ASP .NET 4.0。

編輯:

澄清:登錄請求(在點擊甚至登錄按鈕)時的會話被充氣。在下一次請求期間,不會顯示該會話已經被填充,所以我最終不得不重新膨脹會話。在此之後用戶提出的任何請求,會話似乎都會「粘住」,並且我爲隨後的請求提供適當膨脹的會話。

+0

在頁面循環中,您是否在登錄時填充會話 - 在按鈕中單擊?你的所有網頁是否位於同一個域名下?你是否啓用了會話? – Paddy 2011-06-09 13:03:18

+0

我相信我已經在剛剛提出的問題的版本中解決了您的問題。 – 2011-06-09 14:17:09

回答

1

要回答你的問題SessionState數據獨立於登錄/註銷。

數據可能從SessionState「消失」的原因有幾個。

  • 如果您在Web場上使用InProcSessionState,用戶可以有一個後續請求可以由不同的機器在農場服務。
  • SessionState可以清除,如果它變得太滿(像緩存)。
  • 如果您使用的是自定義SessionStateStoreProvider,則可能無法正確保存/檢索SessionState
+0

所有好的想法。但是,我沒有使用網絡農場(這是在我的本地盒子上),會話未滿,我沒有使用自定義的SessionStateStoreProvider - 我正在使用InProc。會話在登錄請求期間膨脹,然後下一個請求,我最終不得不重新膨脹會話,並且之後的任何請求,它似乎「堅持」,並從這一點我有正確的膨脹會話。 – 2011-06-09 14:12:43