Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dependency injection MVC5、WebAPI2和Ninject无参数构造函数错误_Dependency Injection_Ninject_Asp.net Mvc 5_Asp.net Web Api2 - Fatal编程技术网

Dependency injection MVC5、WebAPI2和Ninject无参数构造函数错误

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都需要依赖项解析器。

所以我有一个完全相反的问题

我有一个新的MVC5/WebAPI2项目,它既有“控制器”又有“APIController”

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


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

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

i、 e.如果使用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

P.S GlobalConfiguration.Configuration.DependencyResolver=新的NinjectResolver(内核);对于APIController来说似乎是不必要的(他们在没有它的情况下工作),添加它并不能修复MVC控制器的问题。(我假设这是因为我使用的是Ninject.Web.WebAPI而不是Ninject.MVC3)相关:在现代版本中,Ninject Web API有自己的依赖解析程序[[1]:在现代版本中,Ninject Web API有自己的依赖解析程序[[1]: