使用Ninject无参数构造函数的Web API

sam*_*sam 3 ninject asp.net-web-api2

当我遇到这个问题时,我正在观看Pluralsight 的教程:搜索这个网站并发现(简单的注入器无法在Web API控制器中注入依赖关系,确保控制器具有无参数的公共构造函数错误)不同的解决方案,但他们没有工作要么.使用WebApi和Ninject时遇到同样的问题,作者在编写代码时没有做任何事情,不知道为什么我要面对这个问题,如果有人解释原因以及解决方案(写什么和写什么),将会很感激.这是代码:

//NinjectWebCommon.cs
 private static void RegisterServices(IKernel kernel)
    {
        kernel.Bind<IRepository>().To<Repository>().InRequestScope(); //for making singleton
        kernel.Bind<WebAPIandEFContext>().To<WebAPIandEFContext>().InRequestScope();

    }   
//Order Controller
  public class OrderController : ApiController
{
    private IRepository _repo;


    public OrderController(IRepository repo) 
    {
        _repo = repo;
    }
//remaining code....
ERROR description
{"$id":"1","Message":"An error has occurred.","ExceptionMessage":"An error 

occurred when trying to create a controller of type 'OrderController'. Make sure that the controller has a parameterless public constructor.","ExceptionType":"System.InvalidOperationException","StackTrace":"   at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType)\r\n   at System.Web.Http.Controllers.HttpControllerDescriptor.CreateController(HttpRequestMessage request)\r\n   at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__1.MoveNext()","InnerException":{"$id":"2","Message":"An error has occurred.","ExceptionMessage":"Type 'WebAPIandEF.Controllers.OrderController' does not have a default constructor","ExceptionType":"System.ArgumentException","StackTrace":"   at System.Linq.Expressions.Expression.New(Type type)\r\n   at System.Web.Http.Internal.TypeActivator.Create[TBase](Type instanceType)\r\n   at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceOrActivator(HttpRequestMessage request, Type controllerType, Func`1& activator)\r\n   at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType)"}}
Run Code Online (Sandbox Code Playgroud)

小智 11

我更新了我的Nuget包之后遇到了同样的问题.Ninject.Web.WebApi版本3.2.4引入了一个重大变化,需要根据发行说明安装软件包"Ninject.Web.WebApi.WebHost".

安装上述软件包后,我的控制器开始再次解析依赖关系.