Если перенаправленный контроллер наследуется от того же места, baseController
где мы переопределяем OnActionExecuting
метод, вызовем рекурсивный цикл. Предположим, мы перенаправили его на действие входа контроллера учетной записи, затем действие входа вызовет OnActionExecuting
метод и снова и снова будет перенаправлен на одно и то же действие входа в систему ... Поэтому мы должны применить OnActionExecuting
метод check in, чтобы проверить, поступил ли запрос от того же контроллера, если так что тогда не перенаправляйте это действие входа снова. вот код:
защищенное переопределение.
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)
вас также можно использоватьnew RedirectToAction(string action, string controller)
. Возможно, это было добавлено в MVC после того, как вы опубликовали свой ответ. Ваше решение в любом случае поставило меня на правильный путь.