加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-4 – 将ninject dependecyResolver用于MVC和WebAPI

发布时间:2020-12-16 00:19:06 所属栏目:asp.Net 来源:网络整理
导读:我已创建和MVC 4 Web应用程序,并决定在此应用程序中使用web api. 我正在为MVC web应用程序使用ninject依赖解析器.现在我想对web api使用这个ninject依赖解析器. 但是这里提出的问题mvc IDependencyResolver名称空间是:使用System.Web.Mvc 和web api IDepend
我已创建和MVC 4 Web应用程序,并决定在此应用程序中使用web api.
我正在为MVC web应用程序使用ninject依赖解析器.现在我想对web api使用这个ninject依赖解析器.
但是这里提出的问题mvc IDependencyResolver名称空间是:使用System.Web.Mvc
和web api IDependencyResolver正在使用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());
       }
   }

查看本文寻求解决方案:
Simple Way to share Dependency Resolvers between MVC and Web API

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读