WebApi抛出错误 - 确保控制器具有无参数的公共构造函数

时间:2015-12-24 19:32:47

标签: c# ninject asp.net-web-api2

我正在尝试通过一本书在WebApi中开发一个应用程序。这是一个简单的应用程序,但每当我使用fiddler测试此应用程序时,它都会抛出错误 - {“消息”:“尝试创建'TasksController'类型的控制器时发生错误。确保控制器具有无参数公共构造函数。“}。我正在使用ninject进行依赖注入。以下是我的一些代码:

public class NinjectConfigurator
{
    public void Configure(IKernel container)
    {
        AddBindings(container);
    }

    private void AddBindings(IKernel container)
    {
        ConfigureLog4net(container);
        ConfigureNHibernate(container);
        ConfigureUserSession(container);
        ConfigureAutoMapper(container);

        container.Bind<IDateTime>().To<DateTimeAdapter>().InSingletonScope();
        container.Bind<IAddTaskQueryProcessor>().To<IAddTaskQueryProcessor>().InRequestScope();
        container.Bind<IAddTaskMaintenanceProcessor>().To<AddTaskMaintenanceProcessor>().InRequestScope();
    }

}

public class TasksController : ApiController
{
    private readonly IAddTaskMaintenanceProcessor _addTaskMaintenanceProcessor;

    //public TasksController() { }
    public TasksController(IAddTaskMaintenanceProcessor addTaskMaintenanceProcessor)
    {
        _addTaskMaintenanceProcessor = addTaskMaintenanceProcessor;
    }

    [Route("", Name="AddTaskRoute")]
    [HttpPost]
    public Task AddTask(HttpRequestMessage requestMessage, NewTask newTask)
    {
        var task = _addTaskMaintenanceProcessor.AddTask(newTask);

        return task;
    }
}

我不知道为什么我会收到错误。我遵循了本书的所有指示。请帮忙!!

1 个答案:

答案 0 :(得分:0)

代码 - container.Bind()。To()是接口的绑定接口,这就是问题。当我将接口绑定到实现时,问题就消失了。新代码是container.Bind()。To()。再次感谢您的帮助。这是一个错字。