Ответ, что @OdeyinkaOlubunmi правильно для веб-API или конкретно System.Web.Http.Filters.ActionFilterAttribute
, но его нельзя использовать для System.Web.Mvc.ActionFilterAttribute
.AuthorizeAttribute
и переопределение AuthorizeCore
- хороший способ, но если вы используете пример @ Vadim для GlobalFilter, вы получите следующую ошибку в стандартной конфигурации:
Ошибка HTTP 404.15 -Не найдено Модуль фильтрации запросов настроен на отклонение запроса, если строка запроса слишком длинная.
Это связано с тем, что по умолчанию /Login?ReturnUrl=
будет добавлять новые значения до тех пор, пока строка запроса не вызовет исключение.
То, как я решил это для MVC, выглядит так:
public class DebugActionFilter : System.Web.Mvc.ActionFilterAttribute
{
public override void OnActionExecuting(System.Web.Mvc.ActionExecutingContext actionContext)
{
actionContext.Result = new HttpStatusCodeResult(HttpStatusCode.Unauthorized);
return;
}
}