web-dev-qa-db-ja.com

ASP.NET Web APIでNinjectを使用する方法は?

MVCでは、NinjectControllerFactoryインターフェイスを実装するクラスDefaultControllerFactoryを作成し、その中でいくつかのバインディングを実行します。ついにGlobalで実行します:

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

しかし、ASP.NET Web APIでNinjectを使用するのはどうですか? Webにはいくつかの情報がありますが、古く、プレリリース版のものです。

この問題の簡単な方法はありますか?

19
Blazi

多くの記事が古いのは、2012年6月(RCは5月31日リリース)からアプローチが変わっていないためです。 Ninject MVC3 Nugetパッケージを追加してから、「IDepenencyResolver」を実装してから、実装を登録する必要があります。

最高の2つのウォークスルーは次のとおりです。

  1. http://www.strathweb.com/2012/05/using-ninject-with-the-latest-asp-net-web-api-source/
  2. http://www.peterprovost.org/blog/2012/06/19/adding-ninject-to-web-api/
19
Mark Jones

Ninject.Web.WebApiの現在のバージョンは、少なくとも3.2.1.0以降、手動で追加する必要がなくなりました。いつものように、パッケージを追加して、すべてをNinjectWebCommon.csに登録するだけです。

6
Chris Pratt

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/ ダウンロードする完全なソリューションを含みます。

5
Bryan

次の手順は、NinjectをWebAPIプロジェクトで機能させるためのシャームのように機能します。

  1. Ninject.Web.WebApiNuGetパッケージをインストールします。
  2. Ninject.Web.WebApi.WebHostNuGetパッケージをインストールします。
  3. App_Startフォルダーに追加されたファイルNinjectWebCommonのメソッド「RegisterServices」に依存関係を登録します。このような:

Private static void RegisterServices(IKernel kernel)
{

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

} 
1
D.B