我最近将Ninject和Ninject.Web.Mvc添加到现有的ASP.NET MVC 4 Web应用程序中.浏览网站时,我收到以下异常,似乎是随机的:
[InvalidOperationException:加载Ninject组件时出错ICache没有在内核的组件容器中注册此类组件.
建议:1)如果已为KernelBase创建自定义子类,请确保已正确实现AddComponents()方法.2)确保没有通过调用RemoveAll()从容器中删除组件.3)确保您没有意外创建多个内核.] C:\ Projects\Ninject \ninject\src\Ninject\Components\ComponentContainer.cs中的Ninject.Components.ComponentContainer.Get(Type组件):160 C:\ Projects\Ninject \中的Ninject.Components.ComponentContainer.Get() ninject\src\Ninject\Components\ComponentContainer.cs:116 Ninject.Web.Common.<> c__DisplayClass2.b__1(内核内核)在c:\ Projects\Ninject\Ninject.Web.Common\src\Ninject.Web.Common\OnePerRequestHttpModule.cs:74 Ninject.GlobalKernelRegistration.MapKernels(Action`1动作)在c:\ Projects\Ninject \ninject\src\Ninject\GlobalKernelRegistration.cs:75 Ninject.Web.Common.OnePerRequestHttpModule.DeactivateInstancesForCurrentHttpRequest()in c:\ Projects\Ninject\Ninject.Web.Common\src\Ninject.Web.Common\OnePerRequestHttpModule.cs:74 Ninject.Web.Common.OnePerRequestHttpModule.b__0(Object o,EventArgs e)在c:\ Projects\Ninject\Ninject.Web中.Common\src\Ninject.Web.Common\OnePerRequestHttpModule.cs:56 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+ 136 System.We b.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&completedSynchronously)+69
一旦我收到上述异常,只需刷新或点击后面似乎会导致网站再次正常运行.该网站的任何一个区域似乎都不会导致其发生.
问题与此处提出的问题非常相似:Ninject +"加载Ninject组件ICache时出错".但是,该问题中的问题似乎是由扩展本身的错误引起的,已经超过一年了,而且看起来已经解决了.
无论如何都不会对NinjectWebCommon.cs文件进行任何修改.(没有模块加载,没有绑定添加.)的唯一途径,我得到它停止是排除NinjectWebCommon.cs从项目,共.
我不确定要包含哪些其他信息,因为除了安装Nuget软件包之外我做的很少.也许值得注意的是,该项目确实包含了对使用Ninject进行DI的其他程序集的引用.
我已经四处看了一下,但为什么会发生这种情况我感到很茫然.任何建议将不胜感激.