我最近在現有的ASP.NET MVC 4 Web應用程序中添加了Ninject和Ninject.Web.Mvc。當你瀏覽網站,我收到下面的異常,看似隨意:隨機發生Ninject異常:「加載Ninject組件ICache時出錯」
[出現InvalidOperationException:錯誤加載Ninject組件ICACHE沒有 這樣的組件已註冊在內核中的組件 容器。
建議:1)如果您已爲 KernelBase創建了自定義子類,請確保您已正確執行AddComponents()方法的 。 2)確保您沒有通過致電 RemoveAll()從容器中取出組件。 3)確保你沒有意外創建一個內核以上的內存。 ] Ninject.Components.ComponentContainer.Get(類型 成分) C:\項目\ Ninject \ ninject \ SRC \ Ninject \組件\ ComponentContainer.cs:160 Ninject.Components.ComponentContainer.Get()在 C:\ Projects \ Ninject \ ninject \ src \ Ninject \ Components \ ComponentContainer.cs:116 Ninject.Web.Common。 <> c__DisplayClass2.b__1(IKernel kernel)in c:\ Projects \ Ninject \ Ninject.Web.Common \ src \ Ninject.Web.Common \ OnePerRequestHttpModule.cs:74 Ninject.GlobalKernelRegistration.MapKernels(Action`1 action)in C:\項目\ ninject \ ninject \ SRC \ ninject \ GlobalKernelRegistration.cs:75 Ninject.Web.Common.OnePerRequestHttpModule.DeactivateInstancesForCurrentHttpRequest()在 ç :\項目\ ninject \ Ninject.Web.Common \ SRC \ ninject .Web.Common \ OnePerRequestHttpModule.cs:74 Ninject.Web.Common.OnePerRequestHttpModule.b__0(Object o, EventArgs e)in c:\ Projects \ Ninject \ Ninject.Web.Common \ src \ Ninject.Web.Common \ OnePerRequestHttpModule.cs:56 System.Web.SyncEventExecutionStep.Syst em.Web.HttpApplication.IExecutionStep.Execute() +136 System.Web.HttpApplication.ExecuteStep(IExecutionStep一步,布爾& completedSynchronously)+69
一旦我收到上述異常,只需刷新或點擊回似乎導致網站再次正常開始運作。該網站的任何一個區域似乎都不會導致其發生。
該問題與此處詢問的問題非常相似:Ninject + "Error loading Ninject component ICache"。然而,這個問題的問題似乎是由於擴展本身的錯誤造成的,已經有一年多了,而且看起來已經解決了。
這發生在沒有任何修改NinjectWebCommon.cs文件,無論如何。 (沒有加載模塊,也沒有添加任何綁定。)讓我停止的唯一方法是從項目中排除NinjectWebCommon.cs。
我不確定要包含哪些其他信息,因爲我除了安裝Nuget軟件包外幾乎沒有做任何其他的事情。也許值得注意的是,這個項目確實包含了對使用Ninject for DI的其他程序集的引用。
我環顧四周,爲什麼會出現這種情況。任何建議將不勝感激。
當在MVC應用程序中使用啓用Ninject的WebActivator和基於Global.asax.cs的方法時,會發生這種情況。 – UnhipGlint