Как устранить неполадки в конструкции инъекций с помощью Ninject
У меня проблемы с инжекцией конструкции.
Когда я вызываю Restful API, сервис возвращает сообщение "Произошла ошибка при попытке создать контроллер типа" TasksController ". Убедитесь, что у контроллера есть открытый конструктор без параметров".
Причиной этой проблемы является то, что Web API Controller не может создать класс из-за неправильного параметра в конструкторе.
Это 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 API 2.1
NInject 3.2.2
Как проверить, какой параметр в конструкторе неверен?
1 ответ
Я решил эту проблему. параметры в конструкторе введены правильно. но параметр IAllTaskQueryProcess в конструкторе AllTaskInqueryProcess не вводится. так что движок ASP.NET не может вызвать класс контроллера
public AllTasksInquiryProcessor(IAllTasksQueryProcessor queryProcessor, IAutoMapper autoMapper)
{
_queryProcessor = queryProcessor;
_autoMapper = autoMapper;
}