【发布时间】:2011-04-01 16:35:31
【问题描述】:
使用在 IIS 6 上运行的 ASP .Net C# 3.5 和 SQL Server 2005 后端。
我正在实现一个复杂的基于多步骤/多用途 Web 表单的 Intranet Web 应用程序,该应用程序具有许多控件并使用表单身份验证。这些步骤非常动态,根据用户在各个步骤中所做的选择向用户显示或隐藏面板和控件。
表单对于用户来说是密集且耗时的,并且不会改变。
我试图确保用户在他们的会话因任何原因被中断时不会感到沮丧,方法是确保在他们返回应用程序时恢复已完成的步骤。
对于用户身份验证超时的情况,使用名为 FormStateKeeper (http://fsk.codeplex.com/) 的 HTTPModule/HTTPHandler 正是这样做的。
由于 FormStateKeeper 在身份验证超时方面工作得很好,我尝试通过创建一个存储提供程序来扩展/修改它,该存储提供程序将序列化的表单状态作为 varbinary 存储在 DB 表中,而不是在 FormStateKeeper 的默认设置的运行时缓存中。这似乎有效,即反序列化并重组为中间页面时的表单看起来很完美,并且与存储在运行时缓存中的表单相同。
无论如何,我尝试通过 DB 存储使用 FormStateKeeper 并没有成功。
我意识到我可以只序列化表单,但我也想获取视图状态/控件状态,因为整个页面/应用程序非常动态,控件/面板隐藏/禁用、步骤指示图形等。
我在序列化/反序列化和存储上述内容时没有问题,但是对于将网页恢复到用户重新登录应用程序时的保存状态的最佳方法有点迷失,即从中间虚拟生成回发页面等。
我们将不胜感激信息、建议和示例。
史蒂夫
【问题讨论】:
标签: c# .net asp.net sql-server persistence