【问题标题】:Can Session_End fire on window close? (ASP.NET)Session_End 可以在窗口关闭时触发吗? (ASP.NET)
【发布时间】:2011-10-30 05:18:16
【问题描述】:

我在一个网站上放置了一个“在线”计数器,我遇到了这两个相互矛盾的来源。

这个(我正在使用这个示例代码):

http://aspdotnetfaq.com/Faq/How-to-show-number-of-online-users-visitors-for-ASP-NET-website.aspx

...说:

当用户关闭浏览器或未点击任何链接时 我们的网站、会话过期和我们的“OnlineUsers”全局变量 减少了。

但是,这个:

http://www.velocityreviews.com/forums/t383710-session-end-guarantee.html

...说:

关闭浏览器窗口或浏览到另一个站点不会导致 至少,不会立即触发 Session_End - 服务器有 绝对无法知道客户端机器上发生了什么,直到 它从中获得另一个 HttpRequest。在这种情况下,Session_End 会话自然超时时会触发。

我已经测试过了,似乎 Session_End 不会触发。

我基本上希望你们对此进行确认或评论。

是否可以在关闭浏览器时更新在线计数器?

【问题讨论】:

    标签: asp.net session global-asax


    【解决方案1】:

    第二个是真的

    关闭浏览器窗口或浏览到另一个站点不会导致 至少,不会立即触发 Session_End - 服务器有 绝对无法知道客户端机器上发生了什么,直到 它从中获得另一个 HttpRequest。在这种情况下,Session_End 会话自然超时时会触发。

    会话超时默认为 20 分钟。您可以通过在您的网站上 20 分钟内不进行任何活动来确认这一点。

    【讨论】:

      【解决方案2】:

      您的两个链接并不矛盾。第一个链接措辞不佳,但它基本上说明了第二个链接所说的内容。如果这样写会更容易理解:

      此外,当用户关闭浏览器或未点击我们网站中的任何链接(一段时间后)时,会话将过期,并且我们的“OnlineUsers”全局变量会减少。

      另请注意,Session_End 可能并不总是触发,尤其是在会话被终止或退回时(例如,如果您更新 web.config,工作进程会回收,或者在某些情况下发生未捕获的异常)。

      【讨论】:

        【解决方案3】:

        正如稍后在发布的第一个链接中指出的,Session_End 事件在会话超时到期后触发。如果与会话关联的用户在会话超时值到期之前未向服务器发送请求,则将触发 session_end 事件并将会话从内存中删除。

        asp.net 会话状态的 MSDN:http://msdn.microsoft.com/en-us/library/ms178581.aspx

        【讨论】:

        • 你说有办法处理浏览器关闭事件。我之前玩过onunloadonbeforeunload,但据我所知,它们只在IE 中工作......
        • 您需要设置类似长轮询(查找信号R 或彗星)的东西,以确定浏览器何时断开连接。默认情况下,您应该期望所有页面一旦呈现就完全断开连接。为了避免混淆,我已经删除了你提到的那句话。
        • @Jeeper 这些事件适用于所有浏览器;您可以在 stackoverflow 问题或答案页面上确认这一点。但是,我不建议您通过这些事件使用户会话过期。
        • @WaqasRaja :是的,因为当您停留在网站上时它也会卸载,所以它不是很出色;)
        • 如果您指的是作为页面生命周期一部分的 asp.net 卸载事件:msdn.microsoft.com/en-us/library/…。当您创建自定义控件并想要运行一些清理代码时,它很有用。如果您使用工作单元,它也很有用,您可以在 page_init 初始化它并在 page_unload 处理它。
        猜你喜欢
        • 2014-01-31
        • 1970-01-01
        • 1970-01-01
        • 2013-11-25
        • 1970-01-01
        • 2012-08-22
        • 2013-09-14
        • 1970-01-01
        • 2015-07-21
        相关资源
        最近更新 更多