How to use Ninject with ASP.NET Web API?

前端 未结 4 1295
悲哀的现实
悲哀的现实 2020-12-05 18:36

In MVC I simply make the class NinjectControllerFactory that implements DefaultControllerFactory interface then do some bindings in it. at last in

相关标签:
4条回答
  • 2020-12-05 19:10

    The reason a lot of the articles are old is because the approach hasn't changed since June 2012 (RC released May 31st). You need to add the Ninject MVC3 Nuget package, then implement 'IDepenencyResolver' and then register your implementation.

    The best two walk-thoughs are:

    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/
    0 讨论(0)
  • 2020-12-05 19:16

    For Web Api 2 you need these nuget packages -

    Ninject
    Ninject.Web.Common
    Ninject.Web.WebApi 
    Ninject.Web.Common.WebHost
    WebActivatorEx 
    

    And you need to edit NinjectWebCommon.CreateKernel(..)to include

    RegisterServices(kernel);
    GlobalConfiguration.Configuration.DependencyResolver = new NinjectDependencyResolver(kernel);
    return kernel;
    

    I've written a detailed blog post here - http://NoDogmaBlog.bryanhogan.net/2016/04/web-api-2-and-ninject-how-to-make-them-work-together/ including a full solution to download.

    0 讨论(0)
  • 2020-12-05 19:26

    The following steps work like a sharm to get Ninject working on an WebAPI project:

    1. Install the Ninject.Web.WebApi NuGet package.
    2. Install the Ninject.Web.WebApi.WebHost NuGet package.
    3. Register your dependencies in the method "RegisterServices" in the file NinjectWebCommon added to the App_Start folder. Like this:

    Private static void RegisterServices(IKernel kernel)
    {

      kernel.Bind <IFoo>().To <Foo>();
    
    } 
    
    0 讨论(0)
  • 2020-12-05 19:31

    The current version of Ninject.Web.WebApi, since at least 3.2.1.0, no longer requires anything additional to be added manually. Just add the package and register everything in NinjectWebCommon.cs, as usual.

    0 讨论(0)
提交回复
热议问题