Asp.Net Session_End事件

在进行Asp.Net项目开发时,经常遇到需要判断用户是否在线的需求,我们可以根据Session的状态进行判断。当用户访问网站时,会创建一个会话(Session),浏览器在与Web服务器通信时,会附带这个会话的Id,Web服务器根据会话的Id获取当前用户的Session。如果会话(Session)过期,那么用户就无法访问需要的功能,必须重新进行登录来启动新的会话。当用户会话结束时,会触发Session_End事件,在这个事件里,我们可以处理用户下线、进行登出记录等工作。Session_End事件在Global.asax中进行定义,下面时示例代码。

       protected void Session_Start(object sender, EventArgs e)
        {
 
        }       

        //sessionState mode="InProc" 才能触发
        protected void Session_End(object sender, EventArgs e)
        {
            WriteLog("登出");
            MemberOnlineList.DeleteOnline();
        }

使用Session_End需要注意:

  • 需要同时定义Session_Start
  • web.config中sessionState必须定义为“InProc”

在web.config中,sessionState的定义示例如下:

 

这里timeout定义的是session的超时时间,以分钟为单位。

需要注意的是,用户关闭浏览器等动作,不能马上触发Session_End事件,总是需要等到超时时间结束才会触发。

你可能感兴趣的:(Asp.Net Session_End事件)