【问题标题】:What status code does ASP.Net (MVC) set when there is a session timeout?会话超时时 ASP.Net (MVC) 设置什么状态码?
【发布时间】:2010-07-16 18:06:42
【问题描述】:
每当 ASP.Net 会话超时时,我们都需要将用户重定向到会话超时页面。我们通过 AJAX 调用获取大部分内容,用户从不会离开默认页面。
有没有办法在客户端(在 Javascript 中)检测会话超时而不对服务器端代码进行任何更改。我们可以检查 HTTP 状态代码吗?
亲切的问候,
【问题讨论】:
标签:
asp.net
javascript
session-timeout
【解决方案1】:
您可以在服务器上设置一个等于会话超时参数的计时器。如果用户处于活动状态,会话将永远不会超时,如果他关闭浏览器,它将自动结束。所以你唯一的情况是页面打开时,但用户没有做任何事情。在这种情况下,您可以在继续发送 ajax 请求(您可以在后台执行此操作)期间保持会话处于活动状态,或者设置一个指示不活动时间的计时器。
【解决方案2】:
默认情况下,当会话超时时,asp.net 不会返回特殊状态代码。如果会话超时,您可以在服务器端检测到这一点并设置特定的状态代码。您还可以设置自定义标头或在会话超时时以特定方式编写内容以通知客户端的代码。
【解决方案3】:
我遇到了一些类似的情况,以下代码解决了我的问题。
//在母版页中:
//180 是会话超时时间...。
功能会话超时(){
self.setTimeout("RedirectToLogin();", '180');
}
function RedirectToLogin() {
window.location.href = '../login.aspx';
}
</script>
在 Master Page Body 标签中使用 onload="SessionTimeOuts()"