Si el controlador redirigido hereda del mismo baseController
donde anulamos el OnActionExecuting
método, causaremos un bucle recursivo. Supongamos que lo redirigimos a la acción de inicio de sesión del controlador de cuenta, luego la acción de inicio de sesión llamará al OnActionExecuting
método y se redirigirá a la misma acción de inicio de sesión una y otra vez ... Por lo tanto, debemos aplicar un OnActionExecuting
método de registro para verificar si la solicitud es del mismo controlador si entonces no redirija la acción de inicio de sesión nuevamente. Aquí está el código:
anulación protegida.
void OnActionExecuting(ActionExecutingContext filterContext)
{
try
{
some condition ...
}
catch
{
if (filterContext.Controller.GetType() != typeof(AccountController))
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary { { "controller", "Account" }, { "action", "Login" } });
}
}
}
new RedirectResult(url)
usted también podría usarnew RedirectToAction(string action, string controller)
. Es posible que esto se haya agregado a MVC después de publicar su respuesta. Su solución me puso en el camino correcto de todos modos.