如您所知,MVC 和 Web api 操作过滤器对其过滤器使用不同的命名空间:
在网络 API 中:public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
HttpActionExecutedContext 位于 system.web.http.filters
在 MVC 中:
public override void OnActionExecuted(ActionExecutedContext actionExecutedContext)
ActionExecutedContext 位于
system.web.mvc
每当 web api 或 MVC 时,我都想为我的所有 Controller 设置一个过滤器。
那么我该如何解决这个问题呢?
最佳答案
MVC 和 Web API 是不同的框架,它们融合的地方是托管部分。此时,MVC 和 Web API 可以托管在网络上(IIS + ASP.NET 管道),因此您可以编写一个 IIS 模块来做您想做的事情。
OWIN 中间件可能是更好的选择,但不幸的是,此时 MVC 不能由 OWIN 托管。但是,您可以使用阶段标记在您想要的阶段在 ASP.NET 管道中运行 OWIN 中间件,但据我所知,PipelineStage
枚举有 PreHandlerExecute
作为最后一个阶段。这意味着您可以执行 OnActionExecuting
之类的操作但不是 OnActionExecuted
.
关于asp.net-mvc - 为 MVC 和 Web Api Controller 采用 Action 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21163333/