在MVC中,我只需创建实现DefaultControllerFactory
接口的类NinjectControllerFactory
,然后在其中进行一些绑定。最后,我在Global
中运行了它:
ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());
但是如何在ASP.NET Web API中使用Ninject呢?网上有一些信息,但已经过时了,而且是针对预发布版本的。
有没有解决这个问题的简单方法?
发布于 2012-12-24 16:18:46
许多文章都很旧的原因是因为自2012年6月(RC发布于5月31日)以来,方法没有改变。您需要添加Ninject MVC3 Nuget包,然后实现'IDepenencyResolver‘,然后注册您的实现。
最好的两种步行方式是:
发布于 2014-09-22 23:08:39
当前版本的Ninject.Web.WebApi,至少从3.2.1.0开始,不再需要手动添加任何额外的东西。只需像往常一样添加包并在NinjectWebCommon.cs中注册所有内容即可。
发布于 2016-04-22 14:32:25
对于Web Api 2,您需要这些nuget包-
Ninject
Ninject.Web.Common
Ninject.Web.WebApi
Ninject.Web.Common.WebHost
WebActivatorEx
并且您需要编辑NinjectWebCommon.CreateKernel(..)
以包含
RegisterServices(kernel);
GlobalConfiguration.Configuration.DependencyResolver = new NinjectDependencyResolver(kernel);
return kernel;
我已经在这里写了一篇详细的博客文章- http://NoDogmaBlog.bryanhogan.net/2016/04/web-api-2-and-ninject-how-to-make-them-work-together/,包括一个完整的解决方案可供下载。
https://stackoverflow.com/questions/14016727
复制相似问题