Подтвердить что ты не робот

Как использовать Ninject с веб-API ASP.NET?

В MVC я просто делаю класс NinjectControllerFactory, который реализует интерфейс DefaultControllerFactory, а затем выполняет некоторые привязки. наконец, в Global Я запустил его:

ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());

Но как насчет использования Ninject в ASP.NET Web API? есть некоторая информация в Интернете, но устарела и для предварительно выпущенных версий.

Есть ли простой способ для этой проблемы?

4b9b3361

Ответ 1

Причина, по которой многие старые статьи, заключается в том, что с июня 2012 года этот подход не изменился (RC выпущен 31 мая). Вам нужно добавить пакет Ninject MVC3 Nuget, а затем реализовать "IDepenencyResolver", а затем зарегистрировать свою реализацию.

Лучшие два шага:

Ответ 2

Текущая версия Ninject.Web.WebApi, начиная с по меньшей мере 3.2.1.0, больше не требует добавления какого-либо дополнительного файла вручную. Просто добавьте пакет и зарегистрируйте все в NinjectWebCommon.cs, как обычно.

Ответ 3

Для 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/, включая полное решение для загрузки.

Ответ 4

Следующие шаги работают как sharm, чтобы заставить Ninject работать над проектом WebAPI:

  • Установите пакет Ninject.Web.WebApi NuGet.
  • Установите пакет Nuject.Web.WebApi.WebHost NuGet.
  • Зарегистрируйте свои зависимости в методе "RegisterServices" в файле NinjectWebCommon, добавленном в папку App_Start. Вот так:

Private static void RegisterServices(IKernel kernel)
{

  kernel.Bind <IFoo>().To <Foo>();

}