Asp.net mvc Ninject.Web.Common抛出ActivationException试图将依赖项注入HttpApplication初始化HttpModule

Asp.net mvc Ninject.Web.Common抛出ActivationException试图将依赖项注入HttpApplication初始化HttpModule,asp.net-mvc,asp.net-mvc-3,ninject,ninject.web.mvc,ninject.web,Asp.net Mvc,Asp.net Mvc 3,Ninject,Ninject.web.mvc,Ninject.web,我甚至不知道从哪里开始解决这个问题,但我在尝试运行ASP.NET MVC应用程序时遇到了一个异常 下面是我得到的错误: [ActivationException:激活IntPtr时出错 没有匹配的绑定可用,并且类型不可自绑定。 激活路径: 将依赖项IntPtr注入Func{IKernel}类型构造函数的参数方法 将依赖函数{IKernel}注入HttpApplication InitializationHttpModule类型构造函数的参数lazyKernel 请求IHttpModule 建议:

我甚至不知道从哪里开始解决这个问题,但我在尝试运行ASP.NET MVC应用程序时遇到了一个异常

下面是我得到的错误:

[ActivationException:激活IntPtr时出错

没有匹配的绑定可用,并且类型不可自绑定。 激活路径:

  • 将依赖项IntPtr注入Func{IKernel}类型构造函数的参数方法
  • 将依赖函数{IKernel}注入HttpApplication InitializationHttpModule类型构造函数的参数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)
    
    c:\Projects\Ninject\Ninject\src\Ninject\KernelBase.cs中Ninject.KernelBase.Resolve(IRequest请求)的
    
    在c:\Projects\Ninject\Ninject\src\Ninject\Planning\Targets\Target.cs中的Ninject.Planning.Targets.Target`1.GetValue(类型服务,IContext父级)处:第197行
    在c:\Projects\Ninject\Ninject\src\Ninject\Planning\Targets.Target`1.resolvein(IContext父级)中的Ninject.Planning.Targets.Target中:第165行
    在c:\Projects\Ninject\Ninject\src\Ninject\Activation\Providers\StandardProvider.cs中的Ninject.Activation.Providers.StandardProvider.GetValue(IContext上下文,ITarget目标)处:第114行
    在c:\Projects\Ninject\Ninject\src\Ninject\Activation\Providers.StandardProvider.c\uu中,在c:\Projects\Ninject\Ninject\src\Ninject\Activation\Providers\StandardProvider.cs中显示Class4.b\uu 2(ITarget目标):第96行
    在System.Linq.Enumerable.WhereSelectArrayInterator`2.MoveNext()中
    在System.Linq.Buffer`1..ctor处(IEnumerable`1源)
    at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1源)
    在c:\Projects\Ninject\Ninject\src\Ninject\Activation\Providers\StandardProvider.cs中的Ninject.Activation.Providers.StandardProvider.Create(IContext上下文)处:第96行
    在c:\Projects\Ninject\Ninject\src\Ninject\Activation\Context.cs中的Ninject.Activation.Context.Resolve()处:第157行
    在c:\Projects\Ninject\Ninject\src\Ninject\KernelBase.cs中的Ninject.KernelBase.c_u显示Class10.b_uC(IBinding绑定):第386行
    在System.Linq.Enumerable.WhereSelectEnumerableInterator`2.MoveNext()中
    在System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source)处
    在c:\Projects\Ninject\Ninject\src\Ninject\Planning\Targets\Target.cs中的Ninject.Planning.Targets.Target`1.GetValue(类型服务,IContext父级)处:第197行
    在c:\Projects\Ninject\Ninject\src\Ninject\Planning\Targets.Target`1.resolvein(IContext父级)中的Ninject.Planning.Targets.Target中:第165行
    在c:\Projects\Ninject\Ninject\src\Ninject\Activation\Providers\StandardProvider.cs中的Ninject.Activation.Providers.StandardProvider.GetValue(IContext上下文,ITarget目标)处:第114行
    在c:\Projects\Ninject\Ninject\src\Ninject\Activation\Providers.StandardProvider.c\uu中,在c:\Projects\Ninject\Ninject\src\Ninject\Activation\Providers\StandardProvider.cs中显示Class4.b\uu 2(ITarget目标):第96行
    在System.Linq.Enumerable.WhereSelectArrayInterator`2.MoveNext()中
    在System.Linq.Buffer`1..ctor处(IEnumerable`1源)
    at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1源)
    在c:\Projects\Ninject\Ninject\src\Ninject\Activation\Providers\StandardProvider.cs中的Ninject.Activation.Providers.StandardProvider.Create(IContext上下文)处:第96行
    在c:\Projects\Ninject\Ninject\src\Ninject\Activation\Context.cs中的Ninject.Activation.Context.Resolve()处:第157行
    在c:\Projects\Ninject\Ninject\src\Ninject\KernelBase.cs中的Ninject.KernelBase.c_u显示Class10.b_uC(IBinding绑定):第386行
    位于System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()
    在System.Linq.Enumerable.d_uB1`1.MoveNext()中
    位于System.Collections.Generic.List`1..ctor(IEnumerable`1集合)
    at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
    在c:\Projects\Ninject\Ninject.Web.Common\src\Ninject.Web.Common中的Ninject.Web.Common.NinjectHttpModule.Init(HttpApplication上下文)中:第41行
    位于System.Web.HttpApplication.registereventsubscriptionswithis(IntPtr-appContext、HttpContext-context、MethodInfo[]handlers)
    位于System.Web.HttpApplication.InitSpecial(HttpApplicationState,MethodInfo[]处理程序,IntPtr-appContext,HttpContext-context)
    位于System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext,HttpContext)
    位于System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)
    
    这似乎不是每个人都会遇到的错误(至少,我的谷歌搜索没有发现任何有用的东西),所以我认为我在做一些奇怪的事情,但我不知道从哪里开始调试

    我应该提到的是,我正在使用几个Ninject库(Ninject、Ninject.Web.Common、Ninject.MVC3和Ninject.FluentValidation),它们都是3.0.00-RC3版本。我意识到,如果我使用预发布库,所有的赌注都没有了,但我感觉我做错了什么,因为其他人似乎没有得到同样的错误


    有没有关于问题可能是什么或者我应该从哪里开始查找的想法?

    我决定删除我的App\u start\NinjectWebCommon.cs文件(该文件是在我安装Ninject.MVC 3.0.0-rc2时创建的)并重新安装Nuget软件包(rc3)。新创建的NinjectWebCommon.cs文件略有不同。问题已解决!

    您可以通过向内核添加以下两个绑定来解决此问题:

    kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
    kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
    
    kernel.Bind().ToMethod(ctx=>()=>新引导
    
    [assembly: WebActivatorEx.PreApplicationStartMethod(typeof(RetailStore.App_Start.NinjectWebCommon), "Start")]
    [assembly: WebActivatorEx.ApplicationShutdownMethodAttribute(typeof(RetailStore.App_Start.NinjectWebCommon), "Stop")]