2009-09-12 73 views
0

我應該如何將用戶數據存儲在asp.net mvc中?假設用戶希望每頁看到50條記錄。我想將它保存在Session中,但是如果我正確地做到了這一點,則會話在每次新控制器初始化時都會重置。那麼在哪裏?一塊餅乾?asp.net mvc存儲​​用戶數據

回答

2

通常情況下,會話在控制器初始化時不會重置!確保你沒有從代碼中清除會話。 無論如何,將它存儲在會話中會導致記錄限制經常重置(取決於會話超時參數)。

請考慮將其存儲在數據庫中保存的用戶配置文件中(將在登錄後使用)或存儲在cookie中(不要求使用登錄)。這將永遠保持此設置 - 您的用戶將明白:) :)

+0

好的,我認爲這將是我的錯,我儘管DB配置文件,但你能解釋什麼時候會話重置?或者如何正確使用它? – Trimack 2009-09-12 21:55:18

+0

會話超時指用戶會話在上次請求後中止之前的分鐘數。它在web.config(或IIS站點配置)中設置。 默認情況下,會話存儲在InProc中,這意味着每次重新啓動應用程序都會清除會話(例如:將新dll版本發佈到/ bin目錄時)。 您可以將會話狀態存儲在單獨的進程(Windows中的SessionState服務)或SQL db中的事件中。 請take a look what MS says about Session :) – twk 2009-09-12 22:08:34

+0

這裏的鏈接: http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.aspx – twk 2009-09-12 22:09:45

1

而不是使用內置的ProfileProvider系統在ASP.NET,我要通過多次訪問保持用戶設置,你應該只使用,你可以改爲放會話中的設置數據。也許包裝在一個可序列化的對象中。

會話將被清除

  • 你清楚它在你的代碼
  • 該cookie存儲會話ID過期(取決於您的設置我的web.config)(如果會話期間 cookie過期,它沒有真正到期用戶關閉所有瀏覽器窗口前)
  • 如果重新啓動應用程序(除非使用粘性會話(DB基於會話)在這種情況下,通過sessiondata應用程序重啓仍然存在)