我已将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库,因此我将其删除并注释掉与之相关的所有代码,但仍然会发生错误。
答案 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