Using ninject dependecyResolver for both MVC and WebAPI

Hashem Aboonajmi picture Hashem Aboonajmi · Jan 16, 2014 · Viewed 12.4k times · Source

I have created and MVC 4 web application and decided to use web api in this app. I'm using ninject dependency resolver for MVC web app. and now I want to use this ninject dependency resolver for web api. but the problem raise here mvc IDependencyResolver namespace is: using System.Web.Mvc and web api IDependencyResolver is using System.Web.Http.Dependencies

so how can I solve this issue?

finally I want something like this:

// Use the container and the NinjectDependencyResolver as
        // application's resolver
        var resolver = new NinjectDependencyResolver(container);

        //Register Resolver for MVC
        DependencyResolver.SetResolver(resolver);

        //Register Resolver for Web Api
        GlobalConfiguration.Configuration.DependencyResolver = resolver;

Answer

Nenad Hummingbird picture Nenad Hummingbird · Jul 10, 2014

There is a way to share same container between MVC and ASP.NET Web API. You just need to implement both interfaces.

public class NinjectDependencyResolver : NinjectDependencyScope, IDependencyResolver, System.Web.Mvc.IDependencyResolver
   {
       private readonly IKernel kernel;
 
       public NinjectDependencyResolver(IKernel kernel)
           : base(kernel)
       {
           this.kernel = kernel;
       }
 
       public IDependencyScope BeginScope()
       {
           return new NinjectDependencyScope(this.kernel.BeginBlock());
       }
   }

Check this article for solution: Simple Way to share Dependency Resolvers between MVC and Web API