【问题标题】:Ioc container for Web Api 2.2Web Api 2.2 的 Ioc 容器
【发布时间】:2014-08-14 06:41:39
【问题描述】:

我正在研究为 Web Api 2.2(最近发布)使用 IOC 容器。我想用它作为 Web API 控制器的依赖解析器,同时注入我自己的依赖。

我尝试使用 Unity 和 Autofac,使用 Web Api nuget 包,但没有成功。我得出的结论是他们不支持 Web Api 2.2(目前)。

还有其他已知的支持 Web Api 2.2 的 IOC 容器吗?

【问题讨论】:

  • 你是怎么得出他们不支持的结论的?所有主要框架(Autofac、Simple Injector、Ninject、Castle Windsor、StructureMap、Unity)都支持 Web API。
  • 我尝试使用 Unity 和 Autofac,两者都针对 System.Web.Http 库版本 5.1.0。 Web Api 2.2 使用 System.Web.Http 版本 5.2.0。尝试使用上述 ioc 调用 Web api 控制器时出现异常。
  • 这就是 bindingRedirects 的用途。如果您使用 NuGet 将这些库添加到您的项目中,在大多数情况下,NuGet 将更改您的配置文件以更改绑定重定向。如果没有发生这种情况,您可以手动轻松完成。

标签: inversion-of-control unity-container ioc-container autofac asp.net-web-api2


【解决方案1】:

添加了程序集重定向到 System.Web.Http 5.2.0.0 并消除了异常。还注意到我没有注册所有类型(控制器的依赖项),因此控制器没有被实例化。

谢谢,现在工作正常。如果 Unity 由于缺少依赖而不是静默而无法实例化,是否可以让 Unity 抛出异常?

【讨论】:

  • 答案包含一个问题,值得单独提出一个新的 Stackoverflow 问题。但据我所知,在 Unity 中没有简单的方法来验证完整的配置,而当涉及到检测其他类型的配置错误(例如 Captive Dependencies)时,您完全被蒙在鼓里。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-10
  • 2020-07-28
  • 1970-01-01
  • 2019-11-02
  • 2014-04-29
  • 1970-01-01
  • 2011-01-02
相关资源
最近更新 更多