使用ninject dependecyResolver为MVC和的WebAPI [英] Using ninject dependecyResolver for both MVC and WebAPI

查看:244
本文介绍了使用ninject dependecyResolver为MVC和的WebAPI的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经创建和MVC 4 Web应用程序,并决定使用网络API在此应用程序。
我使用ninject依赖解析器了MVC的Web应用程序。现在我想使用网络API本ninject依赖解析器。
但问题就在这里提高MVC的IDependencyResolver命名空间为:使用System.Web.Mvc
和Web API的IDependencyResolver是使用System.Web.Http.Dependencies

让我怎么能解决这个问题?

最后,我想是这样的:

  //使用容器和NinjectDependencyResolver为
        //应用程序的解析器
        VAR解析器=新NinjectDependencyResolver(容器);        //注册为解析器MVC
        DependencyResolver.SetResolver(旋);        //注册解析程序网页API
        GlobalConfiguration.Configuration.DependencyResolver =解析器;


解决方案

有是分享MVC和ASP.NET Web API的同一容器中的一种方式。
你只需要实现两个接口。

 公共类NinjectDependencyResolver:NinjectDependencyScope,的IDependencyResolver,System.Web.Mvc.IDependencyResolver
   {
       私人只读的iKernel内核;       公共NinjectDependencyResolver(内核的iKernel)
           :基地(内核)
       {
           this.kernel =内核;
       }       公共IDependencyScope BeginScope()
       {
           返回新NinjectDependencyScope(this.kernel.BeginBlock());
       }
   }

检查这篇文章的解决方案:
简单的方式来分享MVC和Web API 之间的依赖解析器

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;

解决方案

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

这篇关于使用ninject dependecyResolver为MVC和的WebAPI的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆