我们的ASP.net Ajax应用程序中有几个页面根据计时器事件自动刷新UpdatePanels内容,但问题是我们要求超时Web会话并且自动刷新阻止了这一点。
有没有办法阻止计时器回发事件修改Web会话或任何其他备用解决方案,以便在自动刷新UpdatePanel内容时允许Web会话超时?
以下是一个说明此问题的示例。我将会话超时设置为3分钟,并在UpdatePanel中有一个计时器,每分钟都会打勾,并根据当前状态修改UpdatePanel的内容。登录后,我导航到此页面并在5分钟内不执行任何操作,然后尝试单击其他页面,我仍然登录,因为会话没有超时。
答案 0 :(得分:2)
您可以在客户端跟踪用户的活动。如果没有鼠标移动等,您可以使用Sys.Services.AuthenticationService
类(Microsoft AJAX Library 1.0的一部分)将用户注销。您可以在执行实际注销之前弹出确认,以便用户可以取消它,如果他在场。注销后,您可以向用户弹出一条消息,说明由于不活动而自动注销。
我的解决方案如何解决您的问题:
您将会话超时设置为3分钟,并在UpdatePanel中有一个计时器,每分钟都会打勾,并根据当前状态修改UpdatePanel的内容。登录后,您将导航到此页面并且不执行任何操作。在没有活动3分钟后,您向用户弹出确认,要求他使用Sys.Services.AuthenticationService
取消自动注销。如果用户仍然没有采取任何措施,请在几秒钟后将其记录下来。您弹出用户在5分钟后返回浏览器时将看到的“已注销消息”。当他点击另一页时,他没有登录。