Как запустить 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, чтобы разрешить доступ к вашим действиям.