Asp.net mvc 有没有人知道一个很好的指南,可以让Ninject 2在ASP.NET MVC中工作?

Asp.net mvc 有没有人知道一个很好的指南,可以让Ninject 2在ASP.NET MVC中工作?,asp.net-mvc,ninject,Asp.net Mvc,Ninject,我正在与文档作斗争,以确定我到底需要什么。该文档(据我所知)适用于1.5版本 注:我不想扩展NinjectHttpApplication 我已将其配置为在应用程序_Start()中使用NinejCctControllerFactory,但当它尝试创建控制器时,在KernelContainer.Kernel上会出现null引用异常。如果我没有扩展NinjectHttpApplication,我在哪里配置内核?你仍然应该粘贴你的代码,这样人们就可以看到你可能出错的地方 我认为这段代码应该放在您的应用

我正在与文档作斗争,以确定我到底需要什么。该文档(据我所知)适用于1.5版本

注:我不想扩展NinjectHttpApplication


我已将其配置为在应用程序_Start()中使用NinejCctControllerFactory,但当它尝试创建控制器时,在KernelContainer.Kernel上会出现null引用异常。如果我没有扩展NinjectHttpApplication,我在哪里配置内核?

你仍然应该粘贴你的代码,这样人们就可以看到你可能出错的地方

我认为这段代码应该放在您的应用程序中。\u开始:

ControllerBuilder.Current.SetControllerFactory(typeof(NinjectControllerFactory));
KernelContainer.Kernel = new StandardKernel(
    new AutoControllerModule(Assembly.GetExecutingAssembly();
);

由于您已经在扩展另一个HttpApplication派生类,我的想法是将相关源代码从NinjectHttpApplication类复制到扩展的HttpApplication类中。与其剪切粘贴它,不如查看Ninject2 Ninject.Web.Mvc扩展项目中的forNinjectHttpApplication

我会特别复制应用程序启动()和应用程序停止()方法中的内容。注册控制器的其他方法很好,但是您可以按照自己的意愿注册控制器。您将注意到,在应用程序\u Start()中,内核是通过调用纯虚拟函数CreateKernel()创建的——您只需在此处内联创建内核即可。此外,请注意NinjectHttpApplication类上存在内核属性——我也会将其复制到您自己的类中。这里的意图似乎是HttpApplication派生类有效地充当内核容器


免责声明:我还没有尝试过这一点,看看它是否有效,尽管我很快就会。我在一个web项目中使用了Ninject 1.x,并打算在不久的将来升级到Ninject 2;但是,我可能可以直接从NinjectHtpApplication派生。祝你好运

看看这篇博文。它应该有助于澄清您需要对如何配置内核执行的过程


无法从NinjectHttpApplication派生不是什么大问题。它做的不多,但很方便。彼得·迈耶的建议是可行的。只需查看来源。不过,您必须继承IHaveKernel。

我已经给出了我的代码,到目前为止,我所拥有的只是设置控制器工厂。一句话似乎不太值得!另外,这是Ninject的v1。我对v2感兴趣。我实际上没有看到任何代码,或任何详细的stacktrace或其他任何东西。解决方案似乎显而易见,所以我想确保你至少在做显而易见的事情。我错过了ninject 2的部分(在正文中只看到了1.5),所以我用我认为适合ninject 2的内容更新了我的答案。你不想扩展NinjectHttpApplication的原因是什么?我已经扩展了另一个自定义HttpApplication。这仍然是基于从NinjectHttpApplication派生的。当他说扩展时,他是指派生/继承吗?