使用 RouteValueDictionary 重新路由到视图会导致许多重定向.MVC3.

本文关键字:视图 许多 MVC3 重定向 RouteValueDictionary 新路由 路由 使用 | 更新日期: 2023-09-27 18:35:48

当会话过期时,我想将用户重定向回登录页面。所以我添加了一个类并从 ActionFilterAttribute 继承,这样我就可以在即将执行操作时进行检查。作为测试,我把这段代码放进去:

 public class SessionFilters : ActionFilterAttribute
 {
     public override void OnActionExecuting(ActionExecutingContext filterContext)
     {
          var defaults = new RouteValueDictionary {{"Controller", "Home"}, {"Action", "About"}};
          filterContext.Result = new RedirectToRouteResult(defaults);
          base.OnActionExecuting(filterContext);
      }
  }

如您所见,我正在强制重定向到"关于"视图,但是我在浏览器中收到以下错误:

  The webpage at http://localhost:58494/Home/About has resulted in too many redirects.
  Clearing your cookies for this site or allowing third-party cookies may fix the 
  problem. If not, it is possibly a server configuration issue and 
  not a problem with your computer.

如何使用此方法正确重定向到另一个视图?谢谢

更新没关系。我有一个荷马辛普森时刻。我定义的是一个无限循环,所以浏览器就像"忘记这个"。代码正在工作..

使用 RouteValueDictionary 重新路由到视图会导致许多重定向.MVC3.

确保没有使用 [SessionFilters] 属性装饰整个 HomeController ,而只装饰需要重定向到的操作。如果您使用操作过滤器装饰了整个控制器,那么显然此过滤器适用于所有操作,包括"关于",因此适用于无限重定向循环。