浏览器上的结束会话关闭?

时间:2009-03-16 12:33:11

标签: c# .net asp.net

我想在关闭网络浏览器后立即用我的网站刷新用户的会话。我该如何实施呢?

4 个答案:

答案 0 :(得分:4)

这不容易,因为http是无状态的。因此,您没有在浏览器关闭时关闭的打开连接。没办法保证工作。连接可能被丢弃,或者电源关闭会导致任何'onClose'事件不可靠。

您可以在一定程度的不活动后超时。但是,无法保证用户不必去吃午餐,并希望在他们返回时进行公开会话。

如果您担心将人员指示为离线,则可以在ajax中进行一些轮询以保持会话处于活动状态并销毁未在轮询间隔时间内使用的会话。但如果你只是担心资源,我猜这会弊大于利。

答案 1 :(得分:2)

onbeforeunload()事件中进行ajax调用并致电:

Session.Abandon();

答案 2 :(得分:0)

当用户关闭窗口或离开页面时,您没有在服务器端触发事件,您可以使用会话超时检查它,然后确保会话不会在空闲用户上死亡,这可能是在浴室,或制作咖啡,用AJAX验证它。

MakeDummyRequest(); // with a simple http request, you can keep your session alive.

答案 3 :(得分:0)

正如其他人所说,你最好的选择是进行Ajax调用,以保持会话的活跃性。如果您保持精益,此呼叫可以快速间隔发生。然后你可以使用某种会话超时算法。

据说有几点需要注意。您可能希望在协议中构建一种方法来强制用户注销应用程序。想象一下,用户登录到您的应用程序,他周末回家,而不关闭他的计算机。

在周末你进行部署,这将使你修改协议或其他东西的所有ajax通信失效。除非你强迫他出去,否则他会继续登录,并且在星期一早上来时可能会出错。