如何处理asp.net mvc3中ajax调用的会话超时错误
可能重复:
在ajax调用中处理会话超时
我想处理超时错误的Ajax调用,我已经将会话超时设置为1分钟,如..
<authentication mode="Forms">
forms loginUrl="~/User/Login" timeout="1" />
/认证>
我的每一个Ajax请求的呼吁就像.. $.ajax({
url: '../Document/getData?did=' + docid2,
beforeSend: function () {
$("#DialogData").empty().html('<p class="Loadimg"></p>');
},
success: function (result) {
$("#DialogData").load('../Document/getData?did=' + docid2);
},
error: function (req, status, xhr) {
alert(xhr);
//for Timeout Error
if (status == "timeout") {
$("#DialogData").empty().html('<p>Plese Try Again</p><');
}
if (status == "error") {
//for Page Not Found Invalid URL
if (xhr == "Not Found") {
}
//for server error which is from controller
if (xhr == "Internal Server Error") {
}
} //if error
} //error
}); //Ajax
但在超时我得到内部服务器错误...我想处理超时错误不同于其他错误,所以我应该怎么做..在哪里我可以区分此错误。因为现在,如果会话超时它给内部服务器错误或如果任何其他服务器错误发生它提供相同的内部服务器错误的xhr值..当会话超时它显示登录页面是从控制器重定向是在div在哪里我打电话$("#DIVID").load(..)..
我想尽快重定向会议timout加载到整个登录页面...我怎么办...感谢先进..
我从控制器端进行重定向的代码是..
/// <summary> /// The Logout method Removes the Authentication Ticket from the browser /// </summary> /// <returns>Redirection to the Login Page of Site</returns> [Authorize] public ActionResult Logout() { FormsAuthentication.SignOut(); return RedirectToAction("Login", "User"); } public bool IsUserLoggedIn() { if (!String.IsNullOrEmpty(System.Web.HttpContext.Current.User.Identity.Name)) { return true; } return false; } public int GetLoggedInUserId() { if (!IsUserLoggedIn()) return -1; return Convert.ToInt32(System.Web.HttpContext.Current.User.Identity.Name); }
我向你推荐下面的文章,它说明了如果表单身份验证票证过期,你可以将ASP.NET配置为发送401状态码。 这允许您在AJAX请求中拦截此状态代码并采取相应操作。
但是,如果你得到了500错误代码,这意味着你的服务器端代码有问题,你必须先解决。
链接地址: http://www.djcxy.com/p/71793.html上一篇: How to handle session timeout error on ajax call in asp.net mvc3
下一篇: Authorize attribute on Ajax Action methods in controller