在asp.net中关闭窗口时更新列

时间:2013-12-23 08:01:59

标签: asp.net sql vb.net vb.net-2010

我有一个包含列processed的记录表。在我的网页中,我正在使用会话..因为每个打开页面的用户都应该看到表中的不同数据..所以我最初有processed=0,当我选择我的数据时,我正在更新列其中processed=0然后我将列更新为processed=2,这样如果另一个打开页面,他会得到其他数据......但问题是,如果用户关闭页面而不更改任何内容页面我需要将我的列重新设置为0 processed=0但我无法处理页面关闭按钮上的事件...而且还没有注销,因为他们可能会关闭页面而不会退出...所以有人知道我该如何管理这个?

请注意,我正在使用带有vb.net的asp.net

1 个答案:

答案 0 :(得分:0)

根据您的需要,不要依赖某些浏览器操作,即浏览器关闭按钮(如果其中一个用户的互联网发生故障,该怎么办:)。

实现此目的的简单方法是在两个级别执行某种轮询,即在db中(因为您的标志存储在db中)和代码。轮询意味着,在固定的时间间隔之后不断地要求某些操作。显然,民意调查很费力,但这是解决方案之一。

另一种方法是,只要您的用户登录,就会创建一个Http Long live请求,其中任何一方(客户端和服务器)都不会中断,并且一旦它结束,您再次将该标志设置为0但是,与其他所有人一起提出并行的长期要求并不简单。它被称为Comet

所以我建议,每隔2分钟不断发出ajax请求,更新某个字段,在用户帐户表中说LastActive。这将构成您的代码端轮询

然后创建一个sql server作业,该作业持续监视此LastActive字段,并说,如果它与当前DateTime之间的差异超过2.10分钟,则为该用户设置processed = 0。

如果您通过Session使用ASP.NET的表单身份验证

,您还可以查看SessionExpire字段(或其所谓的任何字段)