【问题标题】:Session_End doesn't call after i close browser关闭浏览器后 Session_End 不调用
【发布时间】:2013-04-05 08:46:38
【问题描述】:

我在 web.config 中使用以下设置

<sessionState mode="InProc" cookieless="false" timeout="10"/>

...

<authentication mode="Forms">
<forms loginUrl="login.aspx" timeout="10"/>

Session_End 中,根据 Session 的值,我更改数据库中列的值(如果该列的值为 1 表示用户在线)但有时在用户关闭浏览器的一天后,该列的值 steel 为 1(表示 Session_End 没有t 在用户关闭浏览器后调用)

【问题讨论】:

    标签: asp.net session web-config sessionend


    【解决方案1】:

    浏览器关闭时不会调用任何事件,超时后会调用。

    应该调用事件,但不一定在超时后立即调用。

    您可以从浏览器尝试:开始会话,等待 > 1 分钟,以某种方式进行回发

    这应该有助于验证 Timeout 是否有效,我认为您也会看到 SessionEnd 发生在那个时候。否则,只需等待并开始其他一些会话。系统会在某个时候出现或调用它。

    http://forums.asp.net/t/1689960.aspx/1

    【讨论】:

      【解决方案2】:

      No Session_End 不会在页面关闭时调用。 您需要为此使用脚本

      <script>    
      window.onbeforeunload = function (evt) {
      var message = ‘Are you sure you want to leave?’;
      if (typeof evt == ‘undefined’) {
      evt = window.event;
      }
      if (evt) {
      evt.returnValue = message;
      }
      return message;
      }
      
      </script>
      

      使用此脚本,您可以识别用户何时关闭浏览器

      【讨论】:

      • 仔细尝试一下:浏览器只会看到您正在离开此页面,当您导航到站点中的另一个页面时也会发生这种情况,甚至会导致回发。
      • 正确..但提问者的要求是这样的
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多