在经典网站中保存会话变量数据的最佳方法是什么?
我正在维护一个经典的网站,并希望能够允许我的用户演示网站的所有功能,这意味着允许他们删除记录。
我到目前为止看到的壁橱示例是Telerik控件的演示,他们在第一次加载时将数据集保存在会话中,并允许用户操作数据。
如何在ASP中使用MS Access后端实现相同的目标?
答案 0 :(得分:0)
您可以在会话变量中存储连接或包含对象,以便记住在检索时存储的变量类型。我从未在会话变量中存储过数据集,但是我在会话变量中存储了很多数组,因此您可以使用ADO Getrows method将完整的数据集定位到会话变量中。
答案 1 :(得分:0)
如果您希望将状态保留在多个页面上(例如,演示您完成应用程序),那么这有点棘手。
我建议为每个会话复制MDB文件并使用复制的版本。这将确保每个会话都使用自己的数据。
注意:那么我可以看到的唯一缺点就是你需要删除未使用的MDB文件,因为它可以在一段时间后获得很多。在创建新任务之前,您可以使用计划任务或甚至在会话启动时执行此操作。
我不确定您可以使用什么来检查它是否被使用但检查文件创建日期或者LDF文件也可以帮助您(如果它不存在=未使用)。
答案 2 :(得分:0)
Access数据库有多大?如果您的数据库足够小(相对于服务器容量,预期的用户数等等),那么我喜欢为运行该演示的每个用户使用数据库的新副本。
使用此方法,您可以简化可能的代码路径。否则这“我们是否处于演示模式?”逻辑将渗透到你的很多代码中。
我会这样做......
当用户开始演示时,请为该用户制作Access DB的副本以供使用。如果您的数据库是foo.mdb,请将其复制到/tempdb/foo_1234567890.mdb,其中1234567890是用户的会话ID。
更改用户的连接字符串以指向新数据库副本。从现在开始,您的应用程序可以像“正常”一样运行,无需进一步修改。
有一个计划任务,删除/ tempdb中的所有文件,上次修改时间超过__小时。如果您无法在服务器上安排任务(可能您处于共享托管环境等),那么您可以在执行步骤#1的同时执行此操作。