gpt4 book ai didi

asp.net-mvc - 错误 : "This webpage has a redirect loop" in asp. 网络 mvc

转载 作者:行者123 更新时间:2023-12-03 02:02:28 24 4
gpt4 key购买 nike

在 MVC 中,我为 session 超时创建了自定义属性,例如:

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class SessionExpireFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpContext ctx = HttpContext.Current;

// If the browser session or authentication session has expired...
if (ctx.Session["USER_ID"] == null )
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary {
{ "Controller", "Employer" },
{ "Action", "SessionTimeout" }
});

}

base.OnActionExecuting(filterContext);
}
}

我的意思是当 session 超时时,它应该重定向到“SessionTimeout”操作方法,并且我已经放置了类似的 Controller 方法,

 [SessionExpireFilter]
public class EmployerController : Controller
{
//Action Methods
}

但是在这里,当Session超时时,它会在浏览器地址上执行action方法,但它显示为:

 This webpage has a redirect loop

我不知道我错在哪里?

最佳答案

您的 SessionTimeout 操作会导致 SessionExpireFilter 中的 OnActionExecuting 再次运行,从而形成无限循环。您可以:

  • SessionTimeout 操作放入其自己的 Controller 中,而不使用 SessionExpireFilter 属性
  • SessionExpireFilter 属性放置到除 SessionTimeout 之外的各个操作中,而不是 Controller
  • 检查 OnActionExecuting 代码中的当前操作是否为 SessionTimeout 并且不执行重定向(这不是最好的主意,因为它的名称将来可能会更改并导致又麻烦了)。

关于asp.net-mvc - 错误 : "This webpage has a redirect loop" in asp. 网络 mvc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25037395/

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