2011-01-24 79 views
2

我已经将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文件。Ninject与MVC3 RTM

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

进一步寻找,如果停用以下行“异常已被调用的目标引发异常”;

DependencyResolver.SetResolver(new NinjectServiceLocator(kernel));

构建过程。但我很确定我不想这样做。

任何想法?

----- UPDATE ---------

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

+0

您是否遇到运行时错误或编译时错误? – 2011-01-24 15:24:22

回答

1

由于ASP.NET MVC 3 Beta IServiceLocator接口is replacedIDependencyResolver。我不确定Ninject.MVC3已经有一个版本,他们已经实现了这个接口。

从行DependencyResolver.SetResolver(new NinjectServiceLocator(kernel))判断看来他们没有。

Here's Ninject的这个接口的简单实现。

UPDATE:该Ninject.Web.Mvc库有一个NinjectDependencyResolver类从IDependencyResolver界面延伸。我认为你应该使用这个(我做,一切正常)。

+0

如果我查看ServiceLocator的对象浏览器,基本类型显示为IDependencyResolver。我尝试用示例实现交换定位器,但得到同样的问题。 – Hammerstein 2011-01-24 15:06:42

+0

我已经改变了这一点,但我仍然遇到问题。所以这看起来像一个配置问题。我开始的示例项目有Ninject的2.1.0.76,没有Ninject.Web.Mvc和Ninject.MVC3 1.0.0.0。这样做很好。我的解决方案中的所有项目都有2.1.0.91,我试过换掉但没有运气。 – Hammerstein 2011-01-24 15:26:26