Asp.net mvc 5 NinjectDependencyResolver中的GetService未被命中

Asp.net mvc 5 NinjectDependencyResolver中的GetService未被命中,asp.net-mvc-5,ninject,Asp.net Mvc 5,Ninject,我正在使用一个自定义依赖项解析程序-NinjectDependencyResolver:IdependencySolver 代码如下: using System; using System.Collections.Generic; using System.Web.Mvc; using EssentialTools.Models; using Ninject; namespace EssentialTools.Infrastructure { public class NinjectDepen

我正在使用一个自定义依赖项解析程序-NinjectDependencyResolver:IdependencySolver

代码如下:

using System;
using System.Collections.Generic;
using System.Web.Mvc;
using EssentialTools.Models;
using Ninject;

namespace EssentialTools.Infrastructure
{
public class NinjectDependencyResolver : IDependencyResolver
{
    private IKernel kernel;

    public NinjectDependencyResolver(IKernel kernelParam)
    {
        kernel = kernelParam;
        AddBindings();
    }

    public object GetService(Type serviceType)
    {
        return kernel.TryGet(serviceType);
    }

    public IEnumerable<object> GetServices(Type serviceType)
    {
        return kernel.GetAll(serviceType);
    }

    private void AddBindings()
    {
        kernel.Bind<IValueCalculator>().To<LinqValueCalculator>();
    }
}
}
使用系统;
使用System.Collections.Generic;
使用System.Web.Mvc;
使用EssentialTools.模型;
使用Ninject;
命名空间EssentialTools.Infrastructure
{
公共类NinjectDependencyResolver:IDependencyResolver
{
私有IKernel内核;
公共NinjectDependencyResolver(IKernel kernelParam)
{
kernel=kernelParam;
AddBindings();
}
公共对象GetService(类型serviceType)
{
返回kernel.TryGet(serviceType);
}
公共IEnumerable GetServices(类型serviceType)
{
返回kernel.GetAll(serviceType);
}
私有void AddBindings()
{
kernel.Bind().To();
}
}
}
我在NinjectWebCommon中注册了解析器。 我知道我的AddBindings被击中了,因为我可以设置断点,点击并检查。 或将调试语句写入输出窗口

但我认为我的GetService没有受到影响。 我无法达到断点,也无法将调试语句写入窗口

我以前设置过这个,我总是能够在GetServiceType(类型serviceType)中点击断点,看到serviceType是HomeController,只是为了证明它工作正常

我知道它已注册,因为AddBindings正在工作,如果我对它进行注释,就会发现bind-it错误

此外,如果我注释掉GetService it错误,说明我没有实现它。但即使在实现时也没有使用。这就像是在使用默认值


我在配置中遗漏了什么?

这个例子不是来自Pro ASP.NET MVC 5吗?事实上,我也遇到了同样的问题——它神奇地实例化了控制器,但没有命中GetService或GetServices方法。是的,确实如此。我以前从未发生过这种事。我把它插在我的工作机器上好几次,它一次又一次地发生。但是,如果我下载他的代码并运行它,它就会工作。我不明白。这显然是一个老问题,但如果您使用的是
NinjectWebCommon
,那么它应该可以正常工作,您不需要任何自定义代码。只需将绑定移动到
NinjectWebCommon.RegisterServices
中,如果您必须使用服务位置(比如在
Application_Start
中),您可以使用
var blah=dependencysolver.Current.GetService(typeof(blah))作为blah