datatable ASP.网络超时问题



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

public partial class Startup
{
    public void ConfigureAuth(IAppBuilder app)
    {
        ...
        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            ExpireTimeSpan = System.TimeSpan.FromMinutes(1),
            Provider = new CookieAuthenticationProvider
            {
                ...
        });

然后登录并转到具有数据表的页面并等待超时。如果超时过期并且数据表试图访问服务器,则会发生错误。数据表通过向服务器发出ajax请求来工作,这就是错误的来源。

JavaScript错误:

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

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

有人能帮忙吗?

您始终可以在Global.asax文件中使用Application_Error事件处理程序。添加:

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

。. 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超时,也许这个线程会有所帮助?

处理ajax调用中的会话超时

最新更新