为什么";Session_end”;不起作用

本文关键字:end 不起作用 Session quot 为什么 | 更新日期: 2023-09-27 17:58:23

global.asax文件中的事件如下所示:

protected void Session_End(Object sender, EventArgs e)
{
    var x = 5;
}

当客户端关闭窗口时,代码无法到达那里,为什么?

为什么";Session_end”;不起作用

当客户端关闭窗口时,代码无法到达那里,为什么?

因为当客户端关闭浏览器时,不应该调用此事件。此事件(顾名思义)旨在在会话到期时调用。默认会话过期超时为20分钟,因此此事件将在客户端关闭浏览器20分钟后调用。

哦,还有一个非常重要的问题需要注意:如果您使用进程外会话状态模式(如StateServer或SqlServer),则永远不会调用此事件。

p.S.:Session_End事件仅由InProc会话管理器支持

当您的会话过期时,它会被调用。

我认为您需要在页面关闭或文档卸载时使用javascript函数,即onbeforenload。在该函数中,向服务器发出ajax请求,指示客户端正在关闭窗口。但您应该注意安全性,因为这种javascript方法在客户端注册,恶意用户可以更改ajax请求(甚至阻止它)。如果你不考虑任何安全问题,你可以去。祝你好运