我在使用 Ninject 和 MVC 5 Web api 2.2 时遇到问题

Posted

技术标签:

【中文标题】我在使用 Ninject 和 MVC 5 Web api 2.2 时遇到问题【英文标题】:I am having issues with Ninject and MVC 5 Web api 2.2 【发布时间】:2015-04-17 06:25:15 【问题描述】:

我尝试了MVC5, Web API 2 and and Ninject 中的解决方案,但包破坏了我的构建(System.Web)。我也试过“Ninject.MVC3”包。当我使用“Update-Package -reinstall Microsoft.AspNet.WebApi.WebHost”修复它时,我收到错误:

尝试创建类型错误的控制器时发生错误:“AnyController”。确保控制器有一个无参数的公共构造函数。

我已经多次安装、重新安装、卸载 - 安装了所有软件包。

我的 NinjectWebCommon.cs 是普通的,除了以下内容:

private static void RegisterServices(IKernel kernel)
  
    kernel.Bind<IMonitoringConfigurationService>()
    .To<MonitoringConfigurationService>();
   

如果有任何帮助,我将不胜感激

【问题讨论】:

【参考方案1】:

不确定问题的原因是什么,因为最新版本的 Ninject 几乎是即插即用的。确保您已安装以下 Nuget 包。如果您有其他版本或任何奇怪的东西,请卸载它们:

Ninject
Ninject.MVC5
Ninject.Web.WebApi
Ninject.Web.Common (Added by Ninject.Web.WebApi)
Ninject.Web.Common.WebHost (Added by Ninject.MVC5)

其他任何内容都是不必要的,应该删除。最后两个包是作为依赖安装的,所以你真正应该明确安装的是Ninject.MVC5Ninject.Web.WebApi。要么安装Ninject 基础包。

一旦你得到了正确的包,那么它基本上可以归结为你在NinjectWebCommon.cs 中的配置。您需要修改的唯一方法是RegisterServices,在那里,您需要添加项目所需的所有绑定。如果您收到错误消息说您需要无参数构造函数,这仅表示您尚未添加构造函数所需的绑定。

【讨论】:

以上是关于我在使用 Ninject 和 MVC 5 Web api 2.2 时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 Ninject.MVC3 在测试项目中添加绑定

在 MVC3 应用程序中将 Ninject 与自定义角色提供程序一起使用

如何在 asp.net Web 窗体上实现 Ninject 或 DI?

Ninject 在使用 NinjectHttpModule 时创建一个额外的实例

使用 Ninject、MVC 3 和使用服务定位器模式的依赖注入

如何在Ninject中使用AutoMApper.5.2.0?