使用在IIS 6和SQL Server 2005後端上運行的ASP .Net C#3.5。將會話狀態保存到數據庫表
我正在實施一個複雜的多步/多用途的基於Web表單的Intranet Web應用程序,它有很多控件並使用表單身份驗證。根據在各個步驟中進行的用戶選擇,面板和控件呈現給用戶或隱藏起來,這些步驟非常動態。
對於不會改變的用戶和每個任務來說,表單非常耗時且耗時。
我試圖確保用戶不會因爲任何原因而中斷他們的會話,從而確保完成的步驟在他們返回到應用程序時將被恢復。
對於用戶認證超時的情況,使用名爲FormStateKeeper(http://fsk.codeplex.com/)的HTTPModule/HTTPHandler完成此操作。
因爲FormStateKeeper對於身份驗證超時非常適用,我試圖通過創建一個存儲提供程序來擴展/修改它,將存儲序列化表單狀態作爲varbinary存儲在數據庫表中,而不是存儲在FormStateKeeper的默認運行時緩存中。這似乎工作,即反序列化和重構到中間頁面中的表單看起來很完美,並且與存儲在運行時緩存中的表單完全相同。
無論如何,我嘗試使用FormStateKeeper使用數據庫存儲尚未成功。
我知道我可以只序列化的形式,但我想獲得的視圖狀態/控制狀態也因爲整個頁/應用程序是非常動態的控制/面板隱藏/禁用,步驟指示圖形等
我沒有任何問題序列化/反序列化和存儲上述,但有點丟失的最好的方法來將網頁恢復到它的保存狀態,當用戶登錄到應用程序時保存狀態,即從中間虛擬頁面生成回發等..
信息,建議和例子將不勝感激。
史蒂夫
Dillie-O - 謝謝你的建議。我看着使用ASP .Net SQL會話狀態。我不認爲這個會話對於說幾天後返回登錄的用戶是可用的。 SQL會話狀態是否在這個時尚中起作用?謝謝史蒂夫 – Steve 2011-04-01 17:35:37
@Steve:使用自定義數據庫配置甚至自定義服務器模式(http://msdn.microsoft.com/en-us/library/ms178586.aspx)我相信你可以跟蹤會話狀態的UserId,或將UserId與SessionId相匹配以便在未來的日期進行檢索。我沒有看過這個過程,但對我來說似乎是可行的。 – 2011-04-01 17:57:02
Dillie-O - 我不得不再看看那個。再次感謝。 – Steve 2011-04-01 18:27:35