C# 将会话状态持久化到DB表
使用在IIS6和SQLServer2005后端上运行的ASP.NETC#3.5 我正在实现一个复杂的基于多步骤/多用途web表单的Intranet web应用程序,它有许多控件并使用表单身份验证。这些步骤非常动态,根据用户在各个步骤中所做的选择,面板和控件呈现给用户或隐藏给用户 表单对于用户和每个任务来说都是紧张和耗时的,不会改变 我试图确保当用户返回应用程序时,已完成的步骤将被恢复,以确保用户在会话因任何原因中断时不会感到沮丧 使用名为FormStateKeeper的HTTPModule/HTTPHandler(http://fsk.codeplex.com/)对于用户的身份验证超时的实例,执行此操作 由于FormStateKeeper在身份验证超时时工作良好,因此我尝试通过创建一个存储提供程序来扩展/修改它,该存储提供程序将序列化的表单状态作为varbinary存储在DB表中,而不是作为FormStateKeeper的默认值存储在运行时缓存中。这似乎是可行的,也就是说,当反序列化并重新配置到中间页面时,表单看起来非常完美,与存储在运行时缓存中的表单完全相同 无论如何,我尝试使用DB存储来使用FormStateKeeper并没有成功 我意识到我可以序列化表单,但我想获得viewstate/控件状态,因为整个页面/应用程序非常动态,控件/面板隐藏/禁用,步骤指示图形等 我对序列化/反序列化和存储上述内容没有问题,但在用户重新登录应用程序(即从中间虚拟页面生成回发等)时,我对将网页恢复到其保存状态的最佳方法有点迷茫 信息,建议和例子将不胜感激C# 将会话状态持久化到DB表,c#,.net,asp.net,sql-server,persistence,C#,.net,Asp.net,Sql Server,Persistence,使用在IIS6和SQLServer2005后端上运行的ASP.NETC#3.5 我正在实现一个复杂的基于多步骤/多用途web表单的Intranet web应用程序,它有许多控件并使用表单身份验证。这些步骤非常动态,根据用户在各个步骤中所做的选择,面板和控件呈现给用户或隐藏给用户 表单对于用户和每个任务来说都是紧张和耗时的,不会改变 我试图确保当用户返回应用程序时,已完成的步骤将被恢复,以确保用户在会话因任何原因中断时不会感到沮丧 使用名为FormStateKeeper的HTTPModule/HT
SteveASP.Net有自己的内置SQL Server,您可以轻松地为应用程序进行配置 如果将所有表单变量保存到会话中(甚至可以在后台运行一个AJAX进程,每分钟左右更新一次会话项,以便在添加表单变量时跟踪它们) 以下是一些有助于入门的文章:
我的两美分。D.p.-感谢您指出应用程序版本问题-这是一个主要考虑因素。在我以前尝试修改FormStateKeeper以使用SQL表存储表单状态时,我使用了一个具有表单状态版本的列来跟踪还原与当前版本的兼容性,以避免此问题。i、 e.如果当前表单状态(已修改)应用程序与存储用户的版本不匹配,则不会进行恢复。很好的观察-谢谢。SteveDillie-O-谢谢你的建议。我研究了如何使用ASP.NETSQL会话状态。我不认为该会话对那些说几天后返回登录的用户是可用的。SQL会话状态会在这种情况下工作吗?谢谢Steve@Steve:使用自定义数据库配置,甚至自定义服务器模式(),我相信您可以使用会话状态跟踪用户ID,或者将用户ID与会话ID匹配,以便将来检索。我还没有研究过这个过程,但对我来说似乎是可行的。再次感谢。