Использование Ninject в Asp.Net Web API 2 с контроллерами, которые наследуют ApiController и Controller - PullRequest
0 голосов
/ 22 марта 2019

Я использую Ninject для внедрения зависимостей как в моем веб-приложении MVC 5, так и в API Web API 2.В моем веб-API мне недавно нужно было возвращать View, поэтому я создал ManageController, который наследует Controller.Затем мне нужно было получить доступ к Сервису одним из методов ManageController.При попытке использовать Сервис я продолжал получать сообщение об ошибке, и точка останова Сервиса никогда не будет достигнута.После исследования я обнаружил, что Ninject, скорее всего, не настроен для контроллера (я получаю ошибку конструктора без параметров).Из того, что я могу сказать, у меня нет проекта Ninject.MVC5 и Ninject.Web.Common.WebHost, установленных в проекте Web API.В любом случае, поскольку мне нужен только один метод доступа к сервису 1, я решил искать обходной путь, а не устанавливать еще два пакета и, возможно, пришлось бы работать с некоторыми ошибками.Вот что я придумала.Кто-нибудь видит какие-либо проблемы с моим обходным путем?

Вот как RegisterServices выглядит в NinjectWebCommon.Это внедрение Сервисов в мои Контроллеры, которые прекрасно наследуют 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?

Любая помощь очень ценится!Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...