我在 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版本。
找到了解决方案并认为我会分享。
问题是我正在使用 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() 中加载我的模块
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)