如何在Web Api控制器中触发OnActionExecuting?

loy*_*low 22 c# asp.net-mvc

我的api端点正在使用asp.net mvc(4)web api控制器.

有没有类似mvc OnActionExecuting的事件?

另外,如果请求具有授权令牌,如何访问Request对象以进行查找?

Phi*_*röm 27

由于Niko发布的过滤器对我不起作用(我正在使用ApiController该类),我实现了这个过滤器:

public class MyActionFilter : System.Web.Http.Filters.ActionFilterAttribute 
{
    public override void OnActionExecuting(HttpActionContext actionContext)
    {
        // pre processing
    }
}
Run Code Online (Sandbox Code Playgroud)

确保不使用"System.Web.Mvc.ActionFilterAttribute"中的ActionFilter.

  • 感谢完整的命名空间..(在模糊的mvc-webapi名称的世界 (4认同)

nee*_*eKo 10

使用动作过滤器.

public class MyActionFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
         //use filterContext.HttpContext.Request...
    }
}
Run Code Online (Sandbox Code Playgroud)

对于控制器操作,请应用该属性

[MyActionFilter]
public Action MyAction(...)
{
    //...
}
Run Code Online (Sandbox Code Playgroud)

正如Satpal在他的评论中提到的,您可能实际上想要使用AuthorizeAttribute来授权访问您的操作.