我想对asp.net中的浏览器崩溃事件执行一项操作。如果浏览器崩溃,我想销毁添加到购物车中的物品,并恢复到应用程序和数据库的原始状态。
我怎样才能做到这一点?
请您参考如下方法:
可悲的是,由于多种因素,这是不可能的。
1)网络是无状态的,也就是说,网络服务器除了请求某些内容外,对网络浏览器一无所知。处理完请求后,它无法与浏览器进行通信。
2)浏览器有同样的问题。一旦要求服务器提供内容,就可以了。如果用户关闭其浏览器,或让其 session 超时,或者如果浏览器崩溃,则服务器将不知道它,浏览器也不会告诉它。
3)如果浏览器崩溃了,那么它就崩溃了,因此它不能再工作了,因此它无法在任何地方发送任何信息。
您可以挂接到session_end事件,该事件将在用户 session 结束时触发( session 在用户在一段时间内未要求任何内容时终止,默认为20分钟),但是无法执行告诉为什么 session 结束。用户的浏览器可能崩溃了,可能已经关闭了浏览器,或者可能很无聊并转到了另一个站点。
通常,直到用户 checkout 后,我才更新应用程序状态,因此篮子是我唯一需要删除的内容。为此,我在购物车表上设置了一个datetime列,并在每次更新购物车时对其进行更新。然后,我每天在数据库上运行一个计划任务,该任务将删除所有早于我保留这些篮子的时间的篮子。


