Как запустить OnActionExecuting в Web Api-контроллере?
В моих конечных точках api используются asp.net mvc (4) web-api-контроллеры.
Есть ли события, похожие на то, как mvc имеет OnActionExecuting?
Также, как мне получить доступ к объекту Request для поиска, если запрос имеет токен авторизации?
Ответы
Ответ 1
Поскольку фильтр Niko не работал у меня (я использую класс ApiController
), я применил этот фильтр:
public class MyActionFilter : System.Web.Http.Filters.ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
// pre processing
}
Убедитесь, что ActionFilter не используется из "System.Web.Mvc.ActionFilterAttribute".
Ответ 2
Используйте фильтры действий.
public class MyActionFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//use filterContext.HttpContext.Request...
}
}
Для действия вашего контроллера примените атрибут
[MyActionFilter]
public Action MyAction(...)
{
//...
}
Как сказал Сатпал в своем комментарии, вы действительно можете использовать AuthorizeAttribute, чтобы разрешить доступ к вашим действиям.