Asp.net mvc 3 Can';无法让DependencyResolver与ninject一起工作?

Asp.net mvc 3 Can';无法让DependencyResolver与ninject一起工作?,asp.net-mvc-3,ninject,Asp.net Mvc 3,Ninject,我在Ninject的bootstap中有以下代码: private static IKernel CreateKernel() { var kernel = new StandardKernel(); RegisterServices(kernel); DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel)); return kernel; } private static voi

我在Ninject的bootstap中有以下代码:

private static IKernel CreateKernel()
{
    var kernel = new StandardKernel();
    RegisterServices(kernel);
    DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));
    return kernel;
}

private static void RegisterServices(IKernel kernel)
{
    //TODO: Enregistrer les services ici.. pour ninject!
    kernel.Bind<IContext>().To<MySampleContext>();
    kernel.Bind<ISampleService>().To<SampleService>();
}  
private静态IKernel CreateKernel()
{
var kernel=新的标准内核();
注册服务(内核);
SetResolver(新的NinjectDependencyResolver(内核));
返回内核;
}
私有静态无效注册服务(IKernel内核)
{
//TODO:Enregister les services ici..加油!
kernel.Bind().To();
kernel.Bind().To();
}  
在我的全球计划中,我尝试了这个

 protected virtual void Application_BeginRequest()
        {
            ContextProvider cp = new ContextProvider();
            DbContext context = (DbContext)DependencyResolver.Current.GetService<IContext>();
            cp.SetCurrent(context);
        }
受保护的虚拟无效应用程序\u BeginRequest()
{
ContextProvider cp=新的ContextProvider();
DbContext context=(DbContext)DependencyResolver.Current.GetService();
cp.SetCurrent(上下文);
}
编辑:这里是完整的引导程序。。。但这是Ninject附带的基本功能

public static class NinjectMVC3 
{
    private static readonly Bootstrapper bootstrapper = new Bootstrapper();

    public static void Start() 
    {
        DynamicModuleUtility.RegisterModule(typeof(OnePerRequestModule));
        DynamicModuleUtility.RegisterModule(typeof(HttpApplicationInitializationModule));
        bootstrapper.Initialize(CreateKernel);
    }

    public static void Stop()
    {
        bootstrapper.ShutDown();
    }

    private static IKernel CreateKernel()
    {
        var kernel = new StandardKernel();
        RegisterServices(kernel);
        DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));
        return kernel;
    }

    private static void RegisterServices(IKernel kernel)
    {
        //TODO: Enregistrer les services ici.. pour ninject!
        kernel.Bind<IContext>().To<MySampleContext>();
        kernel.Bind<ISampleService>().To<SampleService>();
    }        
}
公共静态类NinjectMVC3
{
私有静态只读引导程序Bootstrapper=new Bootstrapper();
公共静态void Start()
{
RegisterModule(typeof(OnePerRequestModule));
RegisterModule(typeof(HttpApplicationInitializationModule));
初始化(CreateKernel);
}
公共静态无效停止()
{
bootstrapper.ShutDown();
}
私有静态IKernel CreateKernel()
{
var kernel=新的标准内核();
注册服务(内核);
SetResolver(新的NinjectDependencyResolver(内核));
返回内核;
}
私有静态无效注册服务(IKernel内核)
{
//TODO:Enregister les services ici..加油!
kernel.Bind().To();
kernel.Bind().To();
}        
}

但它返回空值?为什么?

使用NuGet上的Ninject.MVC3并阅读文档

您还需要显示“引导程序”的代码,您是否在app_start上调用此程序?我查看了调试过程,所有程序都被毫无例外地调用了。。所以引导程序工作了。。一切都好。我试图做的是让系统提供一个IContext实例,比如MySampleContext..@RubenBartelink:我对Ninject没有问题,你是对的。老实说,我很晚才起床,只是很累,不该发表任何评论。@Paul:Grando。这里也一样,你起晚了,而且爱争论!删除我的第一条评论,因为它现在毫无意义。如果我回到这里,这会自毁…我用的东西,这并不能回答问题。问题是向方法提供一个IContext实例,如MySampleContext。您没有正确使用扩展。通过设置DependencyResolver.SetResolver(新的NinjectDependencyResolver(内核));您正在重写Ninject.MVC3的DependencyResolver,从那时起扩展就中断了。请定义kernel.Bind().To().InRequestScope();并删除应用程序\u BeginRequest。绑定确保您获得整个请求的相同实例,这样您就不再需要ContextProvider了。@Remo\u Gloor Omg。你说得太对了。我不需要那个ContextProvider。。通过删除它,我可以删除一些代码。现在我甚至不需要启动请求并存储上下文。所以如果我理解的话。。上下文将用于整个请求,而icontext的外观是什么?不管怎么说,在旁注上,你必须同意医生不是那么好。@Downvoter:如果你不准备解释原因,负一在做什么?坚持事实,不要用投票按钮打架——这很不相称。