0

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

我怎样才能做到这一点?

4

1 回答 1

0

遗憾的是,由于多种因素,这是不可能的。

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

2)浏览器有同样的问题。一旦它向服务器询问内容并得到它,就是这样。如果用户关闭他们的浏览器,或者让他们的会话超时,或者如果浏览器崩溃,服务器不知道它,浏览器也不会告诉它。

3)如果浏览器崩溃,它就崩溃了,所以它不能在任何地方发送任何信息,因为它不再工作了。

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

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

于 2012-04-16T15:28:48.997 回答