我遇到了构造注入失败的问题。
当我调用Restful API时,该服务返回消息“尝试创建'TasksController‘类型的控制器时出错。请确保该控制器有一个无参数的公共构造函数。”
此问题的原因是Web API控制器无法构造类,因为构造函数中的参数错误。
这是Ninject配置
container.Bind<IAddTaskQueryProcessor>().To<AddTaskQueryProcessor>().InRequestScope();
container.Bind<ITaskByIdQueryProcessor>().To<TaskByIdQueryProcessor>().InRequestScope();
container.Bind<IPagedDataRequestFactory>().To<PagedDataRequestFactory>().InSingletonScope();
container.Bind<IAllTasksInquiryProcessor>().To<AllTasksInquiryProcessor>().InRequestScope();这是一个控制器类的构造函数。这些参数是在调用构造函数时注入的。
public TasksController(IAddTaskMaintenanceProcessor addTaskMaintenanceProcessor, ITaskByIdInquiryProcessor taskByIdInquiryProcessor,
IUpdateTaskMaintenanceProcessor updateTaskMaintenanceProcessor,
IPagedDataRequestFactory pagedDataRequestFactory,
IAllTasksInquiryProcessor allTasksInquiryProcessor)
{
_addTaskMaintenanceProcessor = addTaskMaintenanceProcessor;
_taskByIdInquiryProcessor = taskByIdInquiryProcessor;
_updateTaskMaintenanceProcessor = updateTaskMaintenanceProcessor;
_pagedDataRequestFactory = pagedDataRequestFactory;
_allTasksInquiryProcessor = allTasksInquiryProcessor;
}环境
ASP.NET Web API2.1
NInject 3.2.2
如何检查构造函数中的哪个参数是错误的?
发布于 2016-04-21 02:21:36
我解决了这个问题。构造函数中的参数被正确注入。但是在AllTaskInqueryProcess的构造函数中没有注入参数IAllTaskQueryProcess。因此ASP.NET引擎不能调用控制器类
public AllTasksInquiryProcessor(IAllTasksQueryProcessor queryProcessor, IAutoMapper autoMapper)
{
_queryProcessor = queryProcessor;
_autoMapper = autoMapper;
}https://stackoverflow.com/questions/36751741
复制相似问题