最近、NinjectとNinject.Web.Mvcの両方を既存のASP.NET MVC 4 Webアプリケーションに追加しました。サイトを閲覧するとき、私は、一見ランダムに、次の例外を受け取る:ランダムに発生するNinject例外: "NinjectコンポーネントICacheの読み込みエラー"
[InvalidOperationExceptionが:エラーロードNinjectコンポーネント命令キャッシュはありません 、このようなコンポーネントは、カーネルの構成要素 コンテナに登録されています。
提案:1) KernelBaseのカスタムサブクラスを作成した場合は、適切に がAddComponents()メソッドを実装していることを確認してください。 2) RemoveAll()への呼び出しによってコンテナからコンポーネントを削除していないことを確認します。 3)誤って1つのカーネルを 以上作成していないことを確認してください。 ] c:\ Projects \ Ninject \ nInject \ src \ Ninject \ Components \ ComponentContainer.cs:160 Ninject.Components.ComponentContainer.Get( コンポーネント) のC:\ Ninject.Components.ComponentContainer.Get() Projects \ Ninject \ ninject \ src \ Ninject \ Components \ ComponentContainer.cs:116 Ninject.Web.Common。 > のc__DisplayClass2.b__1(IKernelカーネル)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() はC:\プロジェクト\ 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.Syst em.Web.HttpApplication.IExecutionStep.Execute() 136 System.Web.HttpApplication.ExecuteStep(IExecutionStepステップ、ブール& completedSynchronously)69
私は、上記だけでさわやかな例外を受け取るか、思わバックをクリックしたら、サイトが正常に機能し始めるようにします。サイトのどの領域も、それが他のものよりも多く発生するとは思われません。
問題は、ここで質問された質問と非常に似ています。Ninject + "Error loading Ninject component ICache"。しかし、その問題は、拡張機能自体のバグが原因で、1年以上経過していると思われ、解決されているように見えます。
これは、NinjectWebCommon.csファイルに何も変更することなく発生します。 (モジュールがロードされず、バインディングも追加されていません)私が停止させる唯一の方法は、NinjectWebCommon.csをプロジェクトから除外することです。
Nugetパッケージをインストールする以外の方法はほとんどありません。おそらく注目すべき点は、このプロジェクトには、Ninject for DIを使用する他のアセンブリへの参照が含まれていることです。
私はかなり見渡してきましたが、なぜこれが起こるのかが分かりません。どんな提案も大歓迎です。
これは、MVAアプリケーションでNinjectを有効にするWebActivatorおよびGlobal.asax.csベースの方法のいずれかを使用する場合に発生します。 – UnhipGlint