MVC5,WebAPI2和Ninject无参数构造函数错误

时间:2014-02-11 20:10:35

标签: dependency-injection ninject asp.net-mvc-5 asp.net-web-api2

所以我遇到与MVC5, Web API 2 and Ninject

完全相反的问题

我有一个新的MVC5 / WebAPI2项目,它同时包含“Controller”和“ApiControllers”。

我正在使用Ninject.Web.WebAPI的最新不稳定版本,没有代码更改NinjectDependencyResolve.cs和Ninject.WebCommom.cs(除了绑定我的依赖项)ApiController的构造函数注入工作。但是,当我调用MVC控制器时,我得到:

没有为此对象定义无参数构造函数。

1 个答案:

答案 0 :(得分:4)

问题是你需要一个MVC和WebAPI的依赖性解析器。根据您使用的Ninject库集,您只能获得其中一个连接库。

即。如果您使用Ninject.Web.WebAPI库,则需要手动设置MVC解析器:

System.Web.Mvc.DependencyResolver.SetResolver(new NinjectResolver(kernel)); 

(我是在NinjectWebCommon.cs CreateKernel()中完成的)

您的Ninject解析器可以继承WebAPI和MVC的接口:

public class NinjectResolver : NinjectScope, 
    System.Web.Http.Dependencies.IDependencyResolver, 
    System.Web.Mvc.IDependencyResolver