我们正在使用ASP.Net MVC和身份框架的数据表。我使用以下代码将身份验证超时设置为1分钟:
/book/Deletebook
然后我登录并转到带有数据表的页面并等待超时。如果超时到期且数据表尝试命中服务器,则会发生错误。数据表的工作原理是向服务器发出ajax请求,这就是错误的来源。
错误是JavaScript错误:
DataTables警告:table id = DataTables_Table_0 - 无效的JSON响应。有关此错误的详细信息,请参阅http://datatables.net/tn/1
我需要优雅地处理这个并将用户重定向到登录页面。
有人可以帮忙吗?
答案 0 :(得分:1)
.NET内置超时例外:
try
{
// your logic here that might time out
}
catch (TimeoutException e)
{
// your logic here if it does time out
}
更多:https://msdn.microsoft.com/en-us/library/system.timeoutexception(v=vs.110).aspx
修改强>
对于AJAX超时,也许这个帖子会有帮助吗?
答案 1 :(得分:1)
您始终可以在Application_Error
文件中使用Global.asax
事件处理程序。添加:
protected void Application_Error(object sender, EventArgs e)
{
//Redirect code here
}
方法,并在代码中加载以检查登录是否有效。如果没有,您可以将它们路由到另一个页面。在我的一个项目中,我曾使用RouteData
类将它们发送到另一个页面:
//send to the error page
var routeData = new RouteData();
routeData.Values.Add("controller", "Error");
if (!userAuthorized)
routeData.Values.Add("action", "NotAuthorized");
else
routeData.Values.Add("action", "Index");
routeData.Values.Add("message", exception.Message);
IController errorController = new DevWebApp.Controllers.ErrorController();
errorController.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));