我不知道哪裏可以開始解決這個問題,但是當我嘗試運行我的ASP.NET MVC應用程序時出現異常。Ninject.Web.Common拋出ActivationException試圖注入依賴到HttpApplicationInitializationHttpModule
這是我得到的錯誤:
[ActivationException:錯誤激活的IntPtr
沒有匹配的綁定是可用的,並且類型不是自可綁定。 激活路徑:
- 注射依賴性的IntPtr的成型函數功能{的iKernel}
- 注射依賴Func鍵{的iKernel}的構造的參數方法成型HttpApplicationInitializationHttpModule
- 請求的構造方法的參數lazyKernel爲IHttpModule的
建議:
- 確保您已經爲IntPtr定義了一個綁定。
- 如果在模塊中定義了綁定,請確保該模塊已加載到內核中。
- 確保您沒有意外創建多個內核。
- 如果使用構造函數參數,請確保參數名稱與構造函數參數名稱匹配。
- 如果您使用自動模塊加載,請確保搜索路徑和過濾器是正確的。
堆棧跟蹤如下:
at Ninject.KernelBase.Resolve(IRequest request) in c:\Projects\Ninject\ninject\src\Ninject\KernelBase.cs:line 359
at Ninject.Planning.Targets.Target`1.GetValue(Type service, IContext parent) in c:\Projects\Ninject\ninject\src\Ninject\Planning\Targets\Target.cs:line 197
at Ninject.Planning.Targets.Target`1.ResolveWithin(IContext parent) in c:\Projects\Ninject\ninject\src\Ninject\Planning\Targets\Target.cs:line 165
at Ninject.Activation.Providers.StandardProvider.GetValue(IContext context, ITarget target) in c:\Projects\Ninject\ninject\src\Ninject\Activation\Providers\StandardProvider.cs:line 114
at Ninject.Activation.Providers.StandardProvider.<>c__DisplayClass4.<Create>b__2(ITarget target) in c:\Projects\Ninject\ninject\src\Ninject\Activation\Providers\StandardProvider.cs:line 96
at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
at Ninject.Activation.Providers.StandardProvider.Create(IContext context) in c:\Projects\Ninject\ninject\src\Ninject\Activation\Providers\StandardProvider.cs:line 96
at Ninject.Activation.Context.Resolve() in c:\Projects\Ninject\ninject\src\Ninject\Activation\Context.cs:line 157
at Ninject.KernelBase.<>c__DisplayClass10.<Resolve>b__c(IBinding binding) in c:\Projects\Ninject\ninject\src\Ninject\KernelBase.cs:line 386
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source)
at Ninject.Planning.Targets.Target`1.GetValue(Type service, IContext parent) in c:\Projects\Ninject\ninject\src\Ninject\Planning\Targets\Target.cs:line 197
at Ninject.Planning.Targets.Target`1.ResolveWithin(IContext parent) in c:\Projects\Ninject\ninject\src\Ninject\Planning\Targets\Target.cs:line 165
at Ninject.Activation.Providers.StandardProvider.GetValue(IContext context, ITarget target) in c:\Projects\Ninject\ninject\src\Ninject\Activation\Providers\StandardProvider.cs:line 114
at Ninject.Activation.Providers.StandardProvider.<>c__DisplayClass4.<Create>b__2(ITarget target) in c:\Projects\Ninject\ninject\src\Ninject\Activation\Providers\StandardProvider.cs:line 96
at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
at Ninject.Activation.Providers.StandardProvider.Create(IContext context) in c:\Projects\Ninject\ninject\src\Ninject\Activation\Providers\StandardProvider.cs:line 96
at Ninject.Activation.Context.Resolve() in c:\Projects\Ninject\ninject\src\Ninject\Activation\Context.cs:line 157
at Ninject.KernelBase.<>c__DisplayClass10.<Resolve>b__c(IBinding binding) in c:\Projects\Ninject\ninject\src\Ninject\KernelBase.cs:line 386
at System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()
at System.Linq.Enumerable.<CastIterator>d__b1`1.MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at Ninject.Web.Common.NinjectHttpModule.Init(HttpApplication context) in c:\Projects\Ninject\Ninject.Web.Common\src\Ninject.Web.Common\NinjectHttpModule.cs:line 41
at System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers)
at System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context)
at System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context)
at System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)
這似乎不是是一個錯誤每個人都變得(至少,我的谷歌搜索沒有打開任何東西很有用),所以我假設我正在做一些奇怪的事情,但我不知道從哪裏開始調試。
我應該提到我正在使用幾個Ninject庫(Ninject,Ninject.Web.Common,Ninject.MVC3和Ninject.FluentValidation),所有這些庫都是3.0.00-RC3版本。我意識到,如果我使用預發行庫,所有投注都關閉,但我有一種感覺,我做錯了某些事情,因爲其他人似乎沒有得到相同的錯誤。
對這個問題可能是什麼或我應該從哪裏開始尋找的想法?
我面對WebApi項目的同樣的問題,調試我注意到在App_Start/NinjectWebCommon.cs中的CreateKernel被調用了兩次,並且第二次崩潰,我修復了在該文件的頂部刪除2行 [組件:WebActivatorEx.PreApplicationStartMethod(typeof運算(RetailStore.App_Start.NinjectWebCommon), 「開始」)] [組件:WebActivatorEx.ApplicationShutdownMethodAttribute(typeof運算(RetailStore.App_Start.NinjectWebCommon), 「停止」)] ,然後方法是調用一次,該錯誤消失。 – CSharper 2016-11-12 23:36:07