【发布时间】:2010-01-13 07:04:35
【问题描述】:
在 C#/Asp.Net 中确定 IIS 服务器上的“用户注销”的最佳方法是什么?
我有一个应用程序,登录用户可以在其中启动服务器上长时间运行的活动。当用户注销时,这些活动需要终止。
当用户点击注销时这不是问题,但是我如何确定用户已经注销,例如在用户的浏览器崩溃、用户失去连接等情况下。
【问题讨论】:
在 C#/Asp.Net 中确定 IIS 服务器上的“用户注销”的最佳方法是什么?
我有一个应用程序,登录用户可以在其中启动服务器上长时间运行的活动。当用户注销时,这些活动需要终止。
当用户点击注销时这不是问题,但是我如何确定用户已经注销,例如在用户的浏览器崩溃、用户失去连接等情况下。
【问题讨论】:
缩短应用程序会话超时时间并对 Web 应用程序实施某种轮询(例如 AJAX 请求)。
轮询负责维护会话,如果浏览器在没有适当注销的情况下关闭或崩溃,它就会停止并且会话很快就会超时。
【讨论】:
这是不可能的。浏览器在不同的电脑上运行,崩溃时不会通知服务器!
【讨论】:
像HSBC 这样的一些在线银行通过简单地在 1 分钟后出现一个弹出窗口来实现类似的操作,其中没有用户响应(例如单击确定按钮)会关闭窗口并将其注销。
我更喜欢的技术是 JavaScript 计时器,它重定向到注销然后登录页面,首先向服务器触发 AJAX 调用,以终止该用户的长期运行进程。在我看来,依赖 Session End 会给用户带来一些烦人的体验。
【讨论】: