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

时间:2013-09-20 14:39:01

标签: c# asp.net-mvc

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

有没有类似于mvc如何使用OnActionExecuting的事件?

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

2 个答案:

答案 0 :(得分:24)

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

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

确保您不使用“System.Web.Mvc.ActionFilterAttribute”中的ActionFilter。

答案 1 :(得分:9)

使用action filters

public class MyActionFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
         //use filterContext.HttpContext.Request...
    }
}

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

[MyActionFilter]
public Action MyAction(...)
{
    //...
}

正如Satpal在评论中提到的那样,您实际上可能希望使用AuthorizeAttribute来授权访问您的行为。