【问题标题】:adopting action filters for both MVC and web Api controllers为 MVC 和 Web Api 控制器采用动作过滤器
【发布时间】:2014-01-16 13:37:06
【问题描述】:

如您所知,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 时为我的所有控制器设置一个过滤器。

那么我该如何解决这个问题呢?

【问题讨论】:

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


    【解决方案1】:

    MVC 和 Web API 是不同的框架,它们的交汇点是托管部分。此时,MVC 和 Web API 可以托管在网络上(IIS + ASP.NET 管道),因此您可以编写一个 IIS 模块来做您想做的事情。

    OWIN 中间件可能是更好的选择,但不幸的是,此时 MVC 不能由 OWIN 托管。但是,您可以使用阶段标记在所需阶段在 ASP.NET 管道中运行 OWIN 中间件,但据我所知,PipelineStage 枚举将PreHandlerExecute 作为最后阶段。这意味着您可以执行OnActionExecuting 之类的操作,但不能执行OnActionExecuted

    【讨论】:

    • 感谢您的回答,您的意思是我应该有一个用于 MVC 控制器的操作过滤器和另一个用于 Web API 的操作过滤器?我用谷歌搜索并没有看到任何相关的问题和答案。我想也许我的问题不正确!
    • 我正在开发一个网络应用程序。它需要一个 web api。那么最好的方法是什么,让一个 web 应用同时实现 mvc 应用和 web api,或者一个 web 应用用于 mvc,另一个用于 webapi?
    猜你喜欢
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多