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的定义示例如下:

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

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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容