使用在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