Asp.net-Mvc-4

對 MVC 和 WebAPI 使用 ninjectdependecyResolver

  • December 31, 2020

我已經創建了 MVC 4 Web 應用程序,並決定在這個應用程序中使用 Web api。我正在為 MVC Web 應用程序使用 ninject 依賴解析器。現在我想為 web api 使用這個 ninject 依賴解析器。但是這裡提出的問題 mvc IDependencyResolver 命名空間是:using System.Web.Mvc 而 web api IDependencyResolver 是using System.Web.Http.Dependencies

那麼我該如何解決這個問題呢?

最後我想要這樣的東西:

// 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;

有一種方法可以在 MVC 和 ASP.NET Web API 之間共享相同的容器。您只需要實現這兩個介面。

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());
      }
  }

查看這篇文章以獲取解決方案: 在 MVC 和 Web API 之間共享依賴解析器的簡單方法

引用自:https://stackoverflow.com/questions/21158274