DataTables ASP.Net超时问题

时间:2015-06-10 15:58:11

标签: jquery asp.net asp.net-mvc datatable

我们正在使用ASP.Net MVC和身份框架的数据表。我使用以下代码将身份验证超时设置为1分钟:

/book/Deletebook

然后我登录并转到带有数据表的页面并等待超时。如果超时到期且数据表尝试命中服务器,则会发生错误。数据表的工作原理是向服务器发出ajax请求,这就是错误的来源。

错误是JavaScript错误:

DataTables警告:table id = DataTables_Table_0 - 无效的JSON响应。有关此错误的详细信息,请参阅http://datatables.net/tn/1

我需要优雅地处理这个并将用户重定向到登录页面。

有人可以帮忙吗?

2 个答案:

答案 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超时,也许这个帖子会有帮助吗?

Handling session timeout in ajax calls

答案 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));