我在MVC5、Web API 2和Ninject中尝试了该解决方案,但该包破坏了我的构建(System.Web)。我还尝试了"Ninject.MVC3"包。当我用"更新包-重新安装Microsoft.AspNet.WebApi.WebHost"修复它时,我得到了错误:
尝试创建错误类型为"AnyController"的控制器时出错。请确保控制器具有无参数的公共构造函数。
我已经多次安装、重新安装、卸载所有软件包。
我的NinjectWebCommon.cs是香草色的,除了以下内容:
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IMonitoringConfigurationService>()
.To<MonitoringConfigurationService>();
}
我将非常感谢的任何帮助
不确定问题的原因是什么,因为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.MVC5
和Ninject.Web.WebApi
。任何一个都将安装Ninject
基本软件包。
一旦你得到了正确的软件包,那么它基本上可以归结为你在NinjectWebCommon.cs
中的配置。唯一需要修改的方法是RegisterServices
,在那里,您需要添加项目所需的任何和所有绑定。如果你得到一个错误,说你需要一个无参数的构造函数,那就意味着你还没有添加构造函数需要的绑定。