4

所以我有与MVC5、Web API 2 和 Ninject完全相反的问题

我有一个新的 MVC5/WebAPI2 项目,它同时具有“控制器”和“ApiControllers”。

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

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

4

1 回答 1

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
于 2014-03-07T16:24:55.160 回答