在vb.net 2012中捕获Session_End

时间:2014-02-07 00:06:58

标签: jquery asp.net .net vb.net visual-studio-2012

我正在使用Visual Studio 2012(VB),JQuery 1.8.2,Javascript 1.5,Windows Server 2008 R2

我需要一种方法来保证在用户会话结束时发生“某些事情”。 - 向客户发送电子邮件,告诉他们在会话期间做了什么

似乎很清楚,许多其他网络开发人员会有“东西”,他们需要在用户会话结束时发生!

我想到的第一个地方是Session_End(doh)。但Session_End似乎依赖于web.config中的超时或调用Session_Abandon,而且我遇到过无法工作的情况..

虽然我有一个退出按钮,但是人们不会使用它,只关闭浏览器。

我花了太多时间尝试用onbeforeunload实现“陷阱浏览器关闭”逻辑..(陷阱/日志回发事件和onbeforeunload,检查日志 - 如果事件意味着他们要离开网站,请调用Session_Abandon等等。)

有人解决了这个问题吗?如果没有,为什么?我不能成为第一个需要它的人..

2 个答案:

答案 0 :(得分:0)

听起来你应该让客户端每隔几秒钟通过AJAX轮询一次服务器。如果经过一段时间且客户端尚未签入,则服务器可以进行清理。

答案 1 :(得分:0)

如果您需要从进程内会话状态(不扩展)更改为SQL Server会话状态,则Session_end不会扩展。 msm8bball有一个很好的建议,虽然我将轮询设置在不少于一分钟。您必须考虑到这样的事实:除非您的设计禁止,否则同一用户可能同时打开多个会话。