Якщо перенаправлений контролер успадковує ту саму, baseController
де ми перекриваємо OnActionExecuting
метод, викликає рекурсивний цикл. Припустимо, ми переспрямовуємо його на дію входу контролера облікового запису, тоді дія входу буде викликати OnActionExecuting
метод і перенаправлятись на ту саму дію входу знову і знову ... Тож ми повинні застосувати OnActionExecuting
метод check, щоб перевірити погоду, якщо запит від того ж контролера, якщо тому тоді не перенаправляйте його знову на вхід. ось код:
захищені переохолодження.
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 після опублікування відповіді. Ваше рішення все одно поставило мене на правильний шлях.