使用MVC3 RTM进行Ninject

时间:2011-01-24 14:51:10

标签: asp.net asp.net-mvc-3 ninject

我已将MVC3从RC2升级到RTM。我们使用的是Ninject 2.1.0.76,但升级后事情就停止了。所以我使用NuGet管理器获取最新的Ninject,Ninject.MVC3和Ninject.Web.Mvc库(分别为2.1.0.91,1.0.0.0和2.1.0.39)。现在,它创建了一个AppStart_NinjectMVC3文件。

我从global.asax中删除了NinjectHttpApplication,并将其恢复为常规的HttpApplication。当我试图建立时,我得到了;

“调用目标已抛出异常”

进一步看,如果我禁用以下行;

DependencyResolver.SetResolver(new NinjectServiceLocator(kernel));

构建经历。但我很确定我不想这样做。

有什么想法吗?

-----更新---------

我创建了一个新的MVC3项目,添加了对Ninject.MVC3的引用,这构建并运行良好。我比较了web.config,没有看到两者中与Ninject或MVC有关的任何差异。一个新项目不会添加Ninject.Web.Mvc库,因此我将其删除并注释掉与之相关的所有代码,但仍然会发生错误。

2 个答案:

答案 0 :(得分:1)

自ASP.NET MVC 3测试IServiceLocator接口is replaced以后IDependencyResolver。我不确定Ninject.MVC3是否已经发布了实现此接口的版本。

从第DependencyResolver.SetResolver(new NinjectServiceLocator(kernel))行看,它们似乎没有。

Here's Ninject的这个界面的简单实现。

更新Ninject.Web.Mvc库有一个NinjectDependencyResolver类,它从IDependencyResolver接口扩展而来。我认为你应该使用这个(我做,一切正常)。

答案 1 :(得分:1)

从这里下载dll

https://github.com/ninject/ninject/archives/master

https://github.com/ninject/ninject.web.mvc/archives/master

更多不要使用Ninject.MVC3所有你需要的东西Ninject.Web.Mvc

我还有一篇文章记录了相同的here