8

我在 asp.net web api 项目中使用 ninject 并开始收到此间歇性 ninject 错误:

"加载 Ninject 组件时出错 ICache 没有在内核的组件容器中注册此类组件。 "

我正在使用:

  • 忍者 3.0.1.10
  • Ninject.MVC3 3.0.0.6
  • Ninject.Web.Common 3.0.0.7

它们都通过 NuGet 带入我的项目中,我在 IocConfig.RegisterIoc 中加载了我的模块,并且没有进行其他更改或调整。

这可能是不相关的,但问题开始发生在我开始将 IKernel 注入我的一个构造函数的大约同一时间。在阅读了有关“特殊解析器”的信息后,我没有为此设置绑定。

我在这里阅读了许多类似的问题:

Ninject +“加载 Ninject 组件 ICache 时出错”

MVC3 项目中的 Ninject 和 ChildKernel:“加载 Ninject 组件 ICache 时出错”

随机发生的 Ninject 异常:“加载 Ninject 组件 ICache 时出错”

尽管在每种情况下,OP 都与我有相同的错误,但解决方案并不合适——我没有创建子内核,也没有使用错误版本的 ninject。

4

1 回答 1

5

找到了解决方案,并认为我会分享。

问题是我正在使用 Ninject.MVC3,这似乎是 Web-API 的错误包。

相反,我需要使用本文所述的 Ninject.Web.WebApi-RC 包:

http://www.eyecatch.no/blog/2012/06/using-ninject-with-webapi-rc/

我遵循的修复步骤是

  • 卸载 Ninject.MVC3 和 Ninject.Web.Common
  • 从 App_Start 文件夹中删除所有 ninject 文件。
  • 从 nuget 安装 Ninject.Web.Common 和 Ninject.Web.WebApi-RC
  • 在 NinjectWebCommon.RegisterServices() 中加载我的模块
于 2013-02-08T11:29:15.697 回答