このような質問がいくつかあることは知っていますが、ドキュメントを見つけることができず、他の質問に役立つ回答がないため、次のようになります。
新しい ASP.NET アプリケーション (VS2013) を作成し、MVC を選択して、API を追加します。Package Console で「update-package」を実行して、最新バージョン (MVC 5.1.2、Web Api 5.1.2) に更新します。
次に、新しいNinject.MVC5およびNinject.Web.WebApiパッケージを追加します。
これらの行を web.config ファイルに追加します (Ninject はバージョン 5.0 を必要としますが、私は 5.1 を持っています)。
<dependentAssembly>
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-5.1.0.0" newVersion="5.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Http.WebHost" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-5.1.0.0" newVersion="5.1.0.0" />
</dependentAssembly>
App_start/NinjectWebCommon.cs ファイルに、1 つのバインドを追加します。
private static void RegisterServices(IKernel kernel) {
kernel.Bind<ILogger, NLogLogger>();
}
次に、ILogger をコンストラクターの単一パラメーターとして使用して単一の ApiController を追加し、ILogger をパラメーターとして HomeController のコンストラクターに追加します。
それはテストのためのものですか?
WebApi の配線が不足していますか? それとも「舞台裏」で起こっているのでしょうか?
とにかく、APIコントローラーにアクセスすると、次のエラーが表示されます:
タイプ 'TestController' のコントローラーを作成しようとしたときにエラーが発生しました。コントローラーにパラメーターなしのパブリック コンストラクターがあることを確認します。
HomeController を試すと、次のようになります。
オブジェクト参照がオブジェクト インスタンスに設定されていません。
最新のパッケージに更新せずに、同じ問題を試しました。私は MVC 3 で何年も Ninject を使用してきました (Ninject.MVC3 パッケージも試しました) が、なぜそれが機能しないのかまったくわかりません。WebApi では、SetResolver への呼び出しを期待していましたが、..
どんな助けでも感謝します!