【问题标题】:Autobinding in MVC4 WebApi with Ninject.Extensions.Conventions使用 Ninject.Extensions.Conventions 在 MVC4 WebApi 中自动绑定
【发布时间】:2012-11-06 20:39:00
【问题描述】:

在我的 MVC4 应用程序中,我使用 Ninject.Extensions.Conventions 使用默认机制将所有 itnerfaces 与其实现自动绑定:

kernel.Bind(x => x
            .FromAssembliesMatching("*")
            .SelectAllClasses()
            .BindDefaultInterface());

这适用于常规控制器,但不适用于 WebApi 控制器。我需要更改/添加什么?

【问题讨论】:

  • 它应该也适用于 web api 控制器。您是否为 webapi 设置了依赖解析器,例如设置 GlobalConfiguration.Configuration.DependencyResolver?你得到什么错误?您使用的是哪个 Ninject 版本?
  • 嗨 Nemesv。我有一个安装了最新版本的 nuget 包 Ninject.Mvc3 的 mvc4 项目。到目前为止,我所做的唯一更改是将上面的代码粘贴到 NinjectWebCommon 文件中的 RegisterServices 方法中。这使得 DI 适用于常规控制器,但不适用于 Api 控制器。我得到的错误是:类型'MyNamespace.TestController'没有默认构造函数

标签: asp.net-mvc-4 asp.net-web-api ninject


【解决方案1】:

好的,我按照这篇文章解决了这个问题: http://www.peterprovost.org/blog/2012/06/19/adding-ninject-to-web-api/

简而言之:我创建了自己的依赖解析器(根据文章)并按照 nemesv 的建议将其分配给 GlobalConfiguration.Configuration.DependencyResolver

【讨论】:

    【解决方案2】:

    已经有很多关于如何通过网络将 NInject 与 Web API 集成的示例,使用:

    请发布有关您实施这些解析器的更多信息,以便更具体地回答。

    【讨论】:

      猜你喜欢
      • 2012-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-27
      • 1970-01-01
      • 2013-01-28
      • 1970-01-01
      • 2013-01-31
      相关资源
      最近更新 更多