gpt4 book ai didi

c# - ajax调用 session 超时

转载 作者:可可西里 更新时间:2023-11-01 08:45:06 25 4
gpt4 key购买 nike

我知道这是重复的,但我无法获得可靠的解决方案(对于 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com