Asp.net-Mvc

隨機發生的 Ninject 異常:“載入 Ninject 組件 ICache 時出錯”

  • April 28, 2014

我最近將 Ninject 和 Ninject.Web.Mvc 添加到現有的 ASP.NET MVC 4 Web 應用程序中。瀏覽該網站時,我收到以下異常,似乎是隨機的:

[InvalidOperationException:載入 Ninject 組件 ICache 時出錯 核心的組件容器中沒有註冊此類組件。

建議: 1) 如果您已經為 KernelBase 創建了自定義子類,請確保您已正確實現 AddComponents() 方法。2) 確保您沒有通過呼叫 RemoveAll() 從容器中刪除組件。3) 確保您沒有意外創建多個核心。] Ninject.Components.ComponentContainer.Get(Type component) in c:\Projects\Ninject\ninject\src\Ninject\Components\ComponentContainer.cs:160 Ninject.Components.ComponentContainer.Get() in 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 + “Error loading Ninject component ICache”。但是,該問題中的問題似乎是由擴展本身的錯誤引起的,已經存在一年多,並且看起來已經解決。

發生這種情況時無需對NinjectWebCommon.cs文件進行任何修改。(沒有載入模組,沒有添加綁定。)我讓它停止的唯一方法是從項目中完全排除NinjectWebCommon.cs 。

我不確定要包括哪些其他資訊,因為除了安裝 Nuget 軟體包之外我幾乎沒有做任何事情。或許值得注意的是,該項目確實包含對使用 Ninject for DI 的其他程序集的引用。

我環顧四周,不知道為什麼會發生這種情況。任何建議將不勝感激。

顯然,您的應用程序中涉及多個核心(MVC + Libs)。應該避免在應用程序執行時創建和釋放核心實例。我強烈建議更改您的設計,以便在應用程序啟動時創建少量核心。以後不會創建任何內容(包括所有庫)。

話雖如此,我在程式碼中沒有看到任何方式如何使用最新版本的 Ninject 發生此問題。驗證應用程序和所有庫是否在最新版本的 Ninject 上可能是值得的。

引用自:https://stackoverflow.com/questions/13732645