Заставь это работать Ninject - MVC 5 - Web Api с Owin - PullRequest
0 голосов
/ 21 октября 2019

У меня есть веб-приложение с MVC 5 и веб-API, и я хочу использовать Ninject для DI.

Я пытаюсь настроить нинъект для неудачного внедрения в контроллеры MVC и Web API.

Я установил следующие пакеты:

  <package id="Ninject" version="3.3.4" targetFramework="net461" />
  <package id="Ninject.Extensions.ContextPreservation" version="3.3.1" targetFramework="net461" />
  <package id="Ninject.Extensions.Factory" version="3.3.2" targetFramework="net461" />
  <package id="Ninject.Extensions.NamedScope" version="3.3.0" targetFramework="net461" />
  <package id="Ninject.MVC5" version="3.3.0" targetFramework="net461" />
  <package id="Ninject.Web.Common" version="3.3.1" targetFramework="net461" />
  <package id="Ninject.Web.Common.OwinHost" version="3.3.1" targetFramework="net461" />
  <package id="Ninject.Web.Common.WebHost" version="3.3.1" targetFramework="net461" />
  <package id="Ninject.Web.WebApi" version="3.3.0" targetFramework="net461" />
  <package id="Ninject.Web.WebApi.OwinHost" version="3.3.0" targetFramework="net461" />

Для конфигурации WEB API я использую ( Как описано здесь )

 app.UseNinjectMiddleware(KernelCreator.CreateKernel).UseNinjectWebApi(config);

Для MVC-части я использую ( как описано здесь ) класс NinjectWebCommon.

Когда обе части на месте, когда я запускаю приложение, я получаю ошибку Sequence contains no elements.

Я удаляю класс NinjectWebCommon, и DI, кажется, работает как для MVC, так и для контроллеров API, но иногда, когда приложение инициализируется (например, при запуске отладки или при повторном запуске пула приложений), я получаю ошибку для отсутствующего конструктора без параметров длязапрошенный контроллер MVC (подозревая, что это связано с порядком инициализации).

Что я делаю не так и как я могу правильно сконфигурировать в этой ситуации?

...