如您所知,MVC和Web api操作过滤器为其过滤器使用不同的名称空间:
web api中的:
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
HttpActionExecutedContext位于system.web.http.filters
:
public override void OnActionExecuted(ActionExecutedContext actionExecutedContext)
ActionExecutedContext位于system.web.mvc
我想在web api或MVC时为我的所有控制器安装一个过滤器。
那我怎么解决这个问题呢?
答案 0 :(得分:1)
MVC和Web API是不同的框架,它们聚合的地方是托管部分。此时,MVC和Web API可以是Web托管(IIS + ASP.NET管道),因此您可以编写IIS模块来执行您想要的操作。
OWIN中间件可能是更好的选择,但遗憾的是MVC此时无法进行OWIN托管。但是,您可以使用舞台标记在您想要的阶段在ASP.NET管道中运行OWIN中间件,但据我所知,PipelineStage
枚举已将PreHandlerExecute
作为最后一个阶段。这意味着您可以执行类似OnActionExecuting
但不能OnActionExecuted
的操作。