use*_*534 3 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";
}
Run Code Online (Sandbox Code Playgroud)
有没有办法method1()在不提及每一个动作的情况下调用每个动作?
您可以实现自定义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);
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以[MyActionFilter]在操作上,控制器上使用它,或将其添加到全局配置中WebApiConfig.cs:
config.Filters.Add(new MyActionFilter());
Run Code Online (Sandbox Code Playgroud)