加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – ajax调用的会话超时

发布时间:2020-12-15 03:42:54 所属栏目:百科 来源:网络整理
导读:我知道这是重复的,但我无法获得可靠的解决方案(对于asp.net网页). 如果会话到期,我只想重定向到登录页面. 我试过以下: 1.使用jquery状态码 $.ajax({ type: "POST",url: "stream.asmx/SomeMethod",contentType: "application/json; charset=utf-8",dataType:
我知道这是重复的,但我无法获得可靠的解决方案(对于asp.net网页).

如果会话到期,我只想重定向到登录页面.
我试过以下:

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),我只期望会话超时.

发送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
        }
     }

问题:如果会话过期,它将不会调用ajax成功行(它返回正确的json).即使这不是一个正确的方式,如果我有很多数量的ajax请求在页面(应该在全球处理).

然而,我看到这个帖子是非常好的解决方案,但它是使用AuthorizeAttribute:handling-session-timeout-in-ajax-calls的mvc

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

解决方法

403状态代码将导致jQuery调用失败方法.从第二次尝试中保留相同的代码,但将重定向处理程序移动到失败方法而不是成功方法.在成功的方法,按照通常的方式对待它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读