2012-04-16 18 views
0

我想对asp.net中的浏览器崩溃事件执行一个操作。我想销毁购物车中添加的项目,并在浏览器崩溃时恢复到应用程序和数据库的原始状态。在asp.net中浏览器崩溃的事件

我该怎么做?

+0

服务器无法知道浏览器是否崩溃或用户关闭浏览器或电源关闭。 – ZippyV 2012-04-16 08:52:55

+1

我不认为这是可能的,但我想听听是否可以完成这样的任务。 – adt 2012-04-16 08:52:59

+0

最好的选择可能是附加到用户会话结束事件。 – McGarnagle 2012-04-16 08:56:36

回答

0

不幸的是,由于几个因素,这是不可能的。

1)网络是无状态的,也就是说网络服务器不知道网络浏览器,除了它要求的东西。服务请求后,它无法与浏览器通信。

2)浏览器有同样的问题。一旦向服务器询问内容并获得它,就是这样。如果用户关闭他们的浏览器,或者他们的会话超时,或者浏览器崩溃,服务器不知道它,并且浏览器不会告诉它。 3)如果浏览器崩溃,它会崩溃,所以它不能在任何地方发送任何信息,因为它不再工作。

您可以挂接到session_end事件中,当用户的会话结束时会触发该事件(会话在用户没有要求任何内容达一定时间的情况下结束,但默认情况下为20分钟),但是没有办法告诉为什么会议结束。用户浏览器可能已经崩溃,他们可能已经关闭了浏览器,或者他们可能已经厌倦并且去了另一个站点。

通常情况下,我不会更新应用程序状态,直到用户检出后,所以篮子才是我需要删除的唯一东西。为此,我在购物车表上设置了一个日期时间列,并在每次购物车更新时更新它。然后,我每天在数据库上运行一个计划任务,删除所有比我保存篮子的时间更早的篮子。

+0

是的,没错..感谢Tim的帮助.. :) – writeToBhuwan 2012-04-17 08:25:13