asp.net-mvc - 为 MVC 和 Web Api Controller 采用 Action 过滤器

标签 asp.net-mvc asp.net-web-api action-filter

如您所知,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/

相关文章:

asp.net - 使用 SQL 将 ASP.net MVC 应用程序部署到暂存和生产

asp.net-mvc - 从 MVC 站点路由到 Angular 2 应用程序

javascript - 在javascript中将项目插入数组

c# - 从 OnActionExecutionAsync 返回而不在 asp.net 核心中执行操作

asp.net - 测试如何与 ASP.NET MVC/WEBFORMS Silverlight MVVM 相关

c# - 有没有办法在 Web.config 文件的 smtp 元素中包含电子邮件地址 "display name"?

asp.net - Owin 中间件 vs ExceptionHandler vs HttpMessageHandler (DelegatingHandler)

c# - 在 OData 中评估 IQueryable 后如何填充模型中的某些属性?

asp.net-mvc - 如果 session 在 mvc 中过期,则从 ActionFilter 显示弹出窗口

c# - 避免在 ASP.NET MVC 5 应用程序的 Action 上使用 OnResultExecuted Filter