0

我有一个使用表单身份验证的 ASP.NET 应用程序,超时设置为五分钟。在我的页面上,我有一个按钮,当单击该按钮时,将对位于我的 .svc 文件中命名的服务上的操作进行 AJAX 调用。我如何从客户端 javascipt 知道应用程序已超时?或者,我如何在 global.asax 中检测到这一点;也许在 application_beginrequest 中?

4

2 回答 2

0

您的方法的一个变体:有一个单独的客户端脚本,首先通过请求一个特殊的页面/处理程序来检查身份验证过期,该页面/处理程序返回 JSON 结构以指示当前用户的身份验证状态。只有在知道用户仍然处于活动状态之后,您才会运行您的主要 ajax 操作。这是另一个请求,但可以防止您将超时逻辑与主要的 ajax 逻辑纠缠在一起。您也可以在“警告,您的会话将在 x 分钟后超时”弹出窗口中单独使用。

有关如何设置它的更多详细信息,请参阅此问题我的回答,但关键是如果您不希望检查过期以延长滑动过期时间,则必须将过期页面/处理程序配置为单独的带有表单身份验证的虚拟目录设置为slidingExpiration = false。

于 2012-10-15T15:54:35.297 回答
0

如果您在谈论会话超时。发生这种情况时,应将 IHttpSessionState.IsNewSession属性设置为 true。

如果您指的是身份验证超时,那么您必须检查 AuthenticationTicket 是否过期。

于 2012-06-23T11:39:49.607 回答