我正在使用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等等。)
有人解决了这个问题吗?如果没有,为什么?我不能成为第一个需要它的人..
答案 0 :(得分:0)
听起来你应该让客户端每隔几秒钟通过AJAX轮询一次服务器。如果经过一段时间且客户端尚未签入,则服务器可以进行清理。
答案 1 :(得分:0)
如果您需要从进程内会话状态(不扩展)更改为SQL Server会话状态,则Session_end不会扩展。 msm8bball有一个很好的建议,虽然我将轮询设置在不少于一分钟。您必须考虑到这样的事实:除非您的设计禁止,否则同一用户可能同时打开多个会话。