Member 1097736 Ответов: 1

Невозможно перенаправить действие контроллера из переопределенного метода onactionexecuting.


Я должен ограничить доступ к определенному действию в контроллере, и поэтому я создал атрибут RestrictAccess, который реализует атрибут ActionFilterAttribute .

Ограничить доступ

public class RestrictAccess : ActionFilterAttribute
    {

        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {

           filterContext.Result = new RedirectToRouteResult(
                    new RouteValueDictionary {{ "Controller", "Test" },                                   
                                              { "Action", "RedirectToError" } });
            base.OnActionExecuting(filterContext);
        }
    }


Во время отладки , после выполнения вышеуказанного кода он должен перенаправить и перейти к действию RedirectToError TestController. Но он не может перенаправить .

Тестовый Контроллер:
public ActionResult RedirectToError()
{
    return View("AccessRestriction.cshtml");
}


Вместо этого я получаю эту ошибку ниже в браузере.
Конечная точка не найдена. Пожалуйста, обратитесь к справочной странице сервиса для построения допустимых запросов к сервису.

Может ли кто - нибудь помочь мне в этом?

Что я уже пробовал:

Я также пытался переопределить unauthorizedRequest. Все тот же вопрос.

public class RestrictAccess : AuthorizeAttribute
{
   public override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
   {
       UrlHelper urlHelper = new UrlHelper(filterContext.RequestContext);
       filterContext.Result = new RedirectResult(urlHelper.Action("Test", "RedirectToError"));
   }
}

1 Ответов

Рейтинг:
11

Bryian Tan

В методе HandleUnauthorizedRequest попробуйте использовать следующий синтаксис и убедитесь, что вы зарегистрировали фильтр (RestrictAccess) в FilterConfig

filterContext.Result = new RedirectResult("~/Test/RedirectToError");