global.asax文件中的事件写成如下:
protected void Session_End(Object sender, EventArgs e)
{
var x = 5;
}
当客户端关闭窗口时代码没有到达那里,为什么?
答案 0 :(得分:3)
当客户端关闭窗口时代码没有到达那里,为什么?
因为当客户端关闭浏览器时不应该调用此事件。此事件(顾名思义)旨在在会话到期时调用。默认会话到期超时为20分钟,因此在客户端关闭浏览器20分钟后将调用此事件。
哦,你应该注意一个非常重要的问题:如果你使用进程外会话状态模式(例如StateServer或SqlServer),这个事件将永远被调用。
答案 1 :(得分:1)
P.S。:仅Session_End
会话管理器
InProc
事件
当你的会话过期时会被调用。
答案 2 :(得分:0)
我认为你需要在页面关闭或文档解密时使用javascript函数,即onbeforeunload。并且在该函数中向服务器发出一个ajax请求,指示客户端正在关闭窗口。但是你应该是注意安全性,因为这个javascript方法在客户端注册,恶意用户可以更改ajax请求(甚至阻止它)。如果你不考虑任何安全问题,你很高兴。好运。