c# - ajax调用 session 超时

标签 c# asp.net ajax session session-timeout

我知道这是重复的,但我无法获得可靠的解决方案(对于 asp.net web)。

我只想在 session 过期时重定向到登录页面。 我试过以下:

1。使用 jquery 状态码

    $.ajax({
     type: "POST",
     url: "stream.asmx/SomeMethod",
     contentType: "application/json; charset=utf-8",
     dataType: "json",
     success: function (msg) {
        //success msg
     },
     error: function (request, status, error) {
        if (status = 403) {
            location.href = 'login.aspx';
        }
     }
    });

问题:这也会为其他错误返回相同的状态代码 (403),我只希望 session 超时。

2。 session是否过期发送json消息

代码隐藏:

    if (!object.Equals(HttpContext.Current.Session["User"], null))
    {
        Id = int.Parse(HttpContext.Current.Session["User"].ToString());
    }
    else
    {
        result = from row in dtscrab.AsEnumerable()
                 select new
                 {
                     redirectUrl = "login.aspx",
                     isRedirect = true
                 };
    }

关于 $.ajax 成功:

    success: function (msg) {
        if (msg.d[0].isRedirect) {
            window.location.href = msg.d[0].redirectUrl;
        }
        else {
            //load containt
        }
     }

问题:如果 session 过期(它确实返回正确的 json),它不会以某种方式调用 ajax 成功行。如果我在页面中有很多 ajax 请求(应该在全局范围内处理),即使这不是正确的方法。

但是,我看到这篇文章确实是一个很好的解决方案,但它是针对使用 AuthorizeAttribute 的 mvc:handling-session-timeout-in-ajax-calls

那么,我是否可以使用在 asp.net web api 中使用 AuthorizeAttribute 的 mvc 中使用的相同概念?如果没有,我该如何解决我面临的问题(上述两个问题中的任何一个)?

最佳答案

403 状态代码将导致 jQuery 调用失败方法。保留第二次尝试的相同代码,但将重定向处理程序移至失败方法而不是成功方法。在 success 方法中,照常处理。

关于c# - ajax调用 session 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14100950/

相关文章:

CopyOnWriteArrayList 的 C# 版本

asp.net - 在 IIS 上运行的 aspx 代码隐藏中连接到 COM 接口(interface)?

c# - 带有子控件的 UserControl 传递到 UserControl 中的 Repeater

c# - 如何在 C# ASP.NET 中等待异步

$.ajax 实用程序中的 JQuery 错误选项

javascript - 如何使用ajax函数获取数组的值?

javascript - 使用 jquery 通过 ajax 加载内容

c# - System.Windows.Forms.Trackbar - 如何防止用户拖动 slider ?

c# - Http Get 请求 GetResponse 错误

c# - 排序数据表列