gpt4 book ai didi

c# - 将 session 状态持久化到数据库表

转载 作者:太空宇宙 更新时间:2023-11-03 11:38:21 25 4
gpt4 key购买 nike

使用在 IIS 6 和 SQL Server 2005 后端上运行的 ASP .Net C# 3.5。

我正在实现一个基于 Intranet Web 应用程序的复杂的多步骤/多用途 Web 应用程序,它具有许多控件并使用表单例份验证。这些步骤非常动态,根据用户在各个步骤中所做的选择向用户显示或隐藏面板和控件。

对于用户来说,表格是密集且耗时的,并且根据不会改变的授权。

我试图通过确保在返回应用程序时恢复已完成的步骤来确保用户在 session 因任何原因中断时不会感到沮丧。

使用名为 FormStateKeeper (http://fsk.codeplex.com/) 的 HTTPModule/HTTPHandler 可以在用户身份验证超时的情况下执行此操作。

由于 FormStateKeeper 在身份验证超时方面表现良好,我尝试通过创建一个存储提供程序来扩展/修改它,该存储提供程序将序列化的表单状态作为 varbinary 存储在数据库表中,而不是存储在 FormStateKeeper 默认的运行时缓存中。这似乎有效,即当反序列化并重构到中间页面时,表单看起来很完美,并且与存储在运行时缓存中的表单相同。

无论如何,我尝试通过数据库存储来使用 FormStateKeeper 的尝试没有成功。

我意识到我可以只序列化表单,但我也想获得 View 状态/控件状态,因为整个页面/应用程序非常动态,控件/面板隐藏/禁用,步骤指示图形等。

我对上面的序列化/反序列化和存储没有问题,但是我有点迷失了在用户重新登录应用程序时将网页恢复到其保存状态的最佳方法,即从中间虚拟生成回发页面等。

信息、建议和示例将不胜感激。

史蒂夫

最佳答案

ASP.Net 有自己内置的 SQL Server session state manager您可以轻松地为您的应用程序配置。

如果您将所有表单变量保存到 session 中(您甚至可以让 AJAX 进程在后台运行以每分钟左右更新一次 session 项,以便在添加表单变量时跟踪它们。

这里有几篇文章可以帮助您入门:

关于c# - 将 session 状态持久化到数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5516240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com