Search code examples
asp.net-mvc-4asp.net-web-apininjectdependency-resolver

Using ninject dependecyResolver for both MVC and WebAPI


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;

Solution

  • 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