【问题标题】:MVC4 - Custom Controller for all calls (including WebAPI)MVC4 - 所有调用的自定义控制器(包括 WebAPI)
【发布时间】:2017-06-07 10:54:42
【问题描述】:

我正在构建一个 MVC4 应用程序,其中有正常的 MVC 视图,并且添加了一些 WebAPI 控制器。 我知道对应的控制器存在于不同的命名空间(System.Web.Mvc 和 System.Web.Http)中。

因此,我想创建一个自定义控制器,它将捕获所有传入调用(到网页和到 WebAPI)、注册调用并执行授权,所有这些都在一个类中以保持一致性。

有没有一种 MVC 方法可以做到这一点? 如果这不能用 1 个自定义控制器完成,还有其他方法吗? HttpModule 是否适合 MVC 应用程序?

现在,我创建了 2 个类似的类,它们源自: System.Web.Http.ApiController 和 System.Web.Mvc.Controller 但似乎不是一个好主意,因为我几乎复制了代码。

【问题讨论】:

  • 您查看过 [Authorize] 属性吗?您可以通过从 AuthorizeAttribute 继承来实现自己的

标签: c# asp.net-mvc-4 asp.net-web-api


【解决方案1】:

实现此类功能的最简单方法是创建自定义 HttpModule 并将其注册到 Http Pipeline。

可以参考自定义HttpModule和注册流程here

【讨论】:

  • @spiros - 感谢您接受我的回答。我没有理解你所说的更复杂的意思。
  • 我应该在管道的哪个位置注册我的 HttpModule?
【解决方案2】:

我认为对于这种情况,最好使用全局过滤器。 但是对于 Mvc 和 WebApi,您需要稍微不同的实现

在此处查看一些示例: How to add global ASP.Net Web Api Filters?

【讨论】:

  • 如果我理解正确的话,我仍然需要实现 2 个过滤器,1 个用于 mvc,1 个用于 webapi,对吧?
  • 是的,它们会非常相似,但是是的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-21
  • 1970-01-01
  • 2012-09-15
  • 2013-09-22
  • 1970-01-01
  • 2014-09-29
相关资源
最近更新 更多