我在MVC 5 Web应用程序和Web API 2 API中都使用Ninject进行依赖项注入。在我的Web API中,最近我需要返回一个View,因此我创建了一个继承Controller的ManageController。然后,我需要使用ManageController方法之一访问服务。尝试使用服务时,我一直遇到错误,并且服务断点永远不会被击中。经过调查,我发现Ninject很可能没有为Controller配置(我收到了无参数构造函数错误)。据我所知,我没有在Web API项目中安装Ninject.MVC5和Ninject.Web.Common.WebHost。无论如何,由于我只需要以一种方法访问1 Service,所以我决定寻找一种解决方法,而不是再安装两个软件包,并且可能不得不解决一些错误。这是我想出的。有人看到我的解决方法有任何问题吗?
这是NinjectWebCommon中RegisterServices的外观。这会将服务注入到完美继承ApiController的控制器中。
private static void RegisterServices(IKernel kernel)
{
kernel.Load(typeof(DataLayerModule).Assembly);
kernel.Load(typeof(ServiceLayerModule).Assembly);
kernel.Load(typeof(ApiModule).Assembly);
ApiModule.Kernel = kernel;
}
这是我给服务打电话的方式。
private IMyService _myService;
public ManageController()
{
_myService = ApiModule.Kernel.Get<IMyService>();
}
我没有创建内核的新实例。
我现在能够像这样访问服务。
await _myService.GetSomething(id);
有人看到这个有什么问题吗?我应该继续安装Ninject.MVC5和Ninject.Web.Common.WebHost并将服务注入ManageController吗?
非常感谢您的帮助!谢谢!