在某些控制器Web API之后运行方法

时间:2014-04-28 19:20:57

标签: asp.net-web-api

我知道Web API有一些过滤器可以让我在控制器运行之前运行一些逻辑(如果我装饰控制器)以及委托处理程序,这些处理程序可以让我在请求和响应上插入请求/响应管道。 / p>

我的问题是,在控制器运行后,我可以运行自定义逻辑,并使用方法修饰来指示哪些控制器受到影响。

像这样的东西

    [HttpPost]
    [WillRunAfterControllerHasRun]
    public Domain.Codelink.CodeLink Add(Domain.Codelink.CodeLink newItem)
    {
        var rtrn = Mapper.Map<Domain.Codelink.CodeLink>(repo.Insert(Mapper.Map<EF.Codelink.CodeLink>(newItem)));


        return (rtrn);
    }

谢谢!

1 个答案:

答案 0 :(得分:0)

您必须使用相同的操作过滤器,但不要覆盖OnActionExecuting(在控制器之前发生),而是覆盖OnActionExecuted

public class PostControllerAttrbute: ActionFilterAttribute
{        

    public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
    {
        //things...

        base.OnActionExecuted(actionExecutedContext);
    }
}