在Aspx页面上使用AJAX Web控件时,如何处理会话超时?

时间:2008-11-02 19:55:30

标签: c# .net ajaxcontroltoolkit

以下是几个月前我在博客上提出的一个问题,但我仍然没有得到正确答案。然后几天前我被问到我是否有答案所以我决定在这里复制问题,这将得到愿意和有能力的开发人员更多的曝光。无论如何,这里... ...


我一直致力于使用AJAX Control Toolkit控件来扩展应用程序可用性的ASP.NET Web应用程序。此外,该应用程序是一个严肃的业务应用程序,需要安全性,包括加密,身份验证和授权。 HTTP会话是InProc模式会话,默认时间为20分钟。

这当然意味着如果用户在浏览器上离开页面超过20分钟,则会话已过期,任何回发到服务器的帖子都会将浏览器重定向到登录页面。但是,如果页面包含来自AutoCompleteExtenderAJAX Control Toolkit控件,则用户可能会回到他的浏览器并开始使用扩展程序的功能,需要在场景回调后面,但会意识到控件根本不起作用 - 没有错误没有重定向到登录页面!?


就像我说的,我没有解决方案所以我最终将SessionExpiredMonitor(由Herr Ziffer)放在我的所有页面上(在我的MasterPage中),这导致每个页面都自动在19分钟后退出,然后将浏览器重定向到登录页面。但是,我不认为这是一个解决方案所以如果你能解决这个问题,请告诉我。非常感谢你。

3 个答案:

答案 0 :(得分:1)

在服务器端,您可以检测到会话已过期并返回强类型异常。在浏览器端,您可以专门检测该错误,只需刷新页面即可。这假定当您的页面回发以进行刷新时,您的应用程序会检测到过期的会话并让他们再次登录。

答案 1 :(得分:0)

在会话实际到期后将用户重定向到登录页面有什么问题?从用户的角度来看,我确实更喜欢这个,而不是注意到一个过期的会话,填写一些太长的形式,并实际注意到提交的到期。 它至少是一个非常用户友好的解决方案。

答案 2 :(得分:0)

我认为自动重定向是首选解决方案,主要是出于明显的安全原因。

您可以通过在18分钟不活动后向用户显示警报来进一步扩展功能,警告他们会话将在1分钟后到期,并提供一种通过单击按钮来扩展会话的方法,该按钮又调用后端页面使会议恢复活力。

在会话到期之前,页面会将用户重定向到登录页面,您可以保存用户/页面/帐户的状态,以便在他们重新登录时可以将其重定向回他们上次查看的页面。 / p>