Dependency injection MVC5、WebAPI2和Ninject无参数构造函数错误
所以我有一个完全相反的问题 我有一个新的MVC5/WebAPI2项目,它既有“控制器”又有“APIController” 我使用的是最新的不稳定版本的Ninject.Web.WebAPI,没有对NinjectDependencyResolve.cs和Ninject.WebCommom.cs进行任何代码更改(除了绑定我的依赖项),ApicController的构造函数注入工作正常。但是,当我调用MVC控制器时,我得到:Dependency injection MVC5、WebAPI2和Ninject无参数构造函数错误,dependency-injection,ninject,asp.net-mvc-5,asp.net-web-api2,Dependency Injection,Ninject,Asp.net Mvc 5,Asp.net Web Api2,所以我有一个完全相反的问题 我有一个新的MVC5/WebAPI2项目,它既有“控制器”又有“APIController” 我使用的是最新的不稳定版本的Ninject.Web.WebAPI,没有对NinjectDependencyResolve.cs和Ninject.WebCommom.cs进行任何代码更改(除了绑定我的依赖项),ApicController的构造函数注入工作正常。但是,当我调用MVC控制器时,我得到: 没有为此对象定义无参数构造函数。问题是MVC和WebAPI都需要依赖项解析器。
没有为此对象定义无参数构造函数。问题是MVC和WebAPI都需要依赖项解析器。根据您使用的Ninject库集的不同,您只能获得其中一个 i、 e.如果使用Ninject.Web.WebAPI库,则需要手动设置MVC解析器:
System.Web.Mvc.DependencyResolver.SetResolver(new NinjectResolver(kernel));
(我是在NinjectWebCommon.csCreateKernel()
中这样做的)
您的Ninject解析器可以继承WebAPI和MVC的接口:
public class NinjectResolver : NinjectScope,
System.Web.Http.Dependencies.IDependencyResolver,
System.Web.Mvc.IDependencyResolver
P.S GlobalConfiguration.Configuration.DependencyResolver=新的NinjectResolver(内核);对于APIController来说似乎是不必要的(他们在没有它的情况下工作),添加它并不能修复MVC控制器的问题。(我假设这是因为我使用的是Ninject.Web.WebAPI而不是Ninject.MVC3)相关:在现代版本中,Ninject Web API有自己的依赖解析程序[[1]:在现代版本中,Ninject Web API有自己的依赖解析程序[[1]: