在Web APi中的每个操作之后触发某些方法

时间:2012-11-28 18:54:26

标签: c#-4.0 asp.net-web-api

我正在编写ASP.NET WEB API。

一旦执行了Action,我想调用一个方法。

例如:

 public string Action1(object a)
 {
     // ...
     // call method1();
     return "sample1";
 }

 public string Action2(object b)
 {
     // ...
     // call method1();
     return "sample2";
 }

有没有办法在每个动作中都调用method1()而不提及每个动作?

1 个答案:

答案 0 :(得分:8)

您可以在System.Web.Http.Filters.ActionFilterAttribute内实施自定义method1()并致电OnActionExecuted(...)

public class MyActionFilter : System.Web.Http.Filters.ActionFilterAttribute
{
    public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
    {
        // call method1();
        // ...
        base.OnActionExecuted(actionExecutedContext);
    }
}

然后,您可以在控制器上的操作中使用此[MyActionFilter],或将其添加到WebApiConfig.cs中的全局配置中:

        config.Filters.Add(new MyActionFilter());