26

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

是否有任何类似于 mvc 具有 OnActionExecuting 的事件?

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

4

2 回答 2

33

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

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

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

于 2015-10-12T20:56:41.333 回答
12

使用动作过滤器

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

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

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

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

于 2013-09-20T14:51:57.677 回答