最近在维护老项目。定义个拦截器记录接口日志。但是发现不生效
最后发现因为继承的 ApiController不是Controller
只能用 System.Web.Http下的拦截器生效。所以现在总结归纳一下
Web Api: System.Web.Http.Filters.ActionFilterAttribute 继承该类
Mvc: System.Web.Mvc.ActionFilterAttribute 继承该类
Mvc:
提供4个重写方法
OnActionExecuting 执行前
OnActionExecuted 执行后
OnResultExecuting 返回前
OnResultExecuted 返回后
Web Api:
提供4个重写方法
OnActionExecuting 执行前 OnActionExecutingAsync 执行前(异步)
OnActionExecuted 执行后 OnActionExecutedAsync 执行后(异步)
根据自己需求重写方法。然后注入
注入有2种方法
1. Web Api 和 Mvc 通用的。直接打特性。作用域为打了特性的 Class / Action
我是新建了一个类继承基类避免全局+了。
2.全局注入Filter:
Mvc:
在FilterConfig下注入
Web Api:
在WebApiConfig下注入