2016-04-20 11 views
0

Ich habe Probleme mit der Konstruktion Injektion fehlgeschlagen.Wie zur Fehlerbehebung Bau Injektion mit Ninject

Wenn ich die restful API aufruft, gibt der Dienst die Meldung "Fehler beim Versuch, einen Controller vom Typ 'TasksController' zu erstellen, zurück. Stellen Sie sicher, dass der Controller einen parameterlosen öffentlichen Konstruktor hat."

Die Ursache dieses Problems ist, dass der Web-API-Controller die Klasse aufgrund falscher Parameter im Konstruktor nicht erstellen kann.

Dies ist Ninject Konfiguration

container.Bind<IAddTaskQueryProcessor>().To<AddTaskQueryProcessor>().InRequestScope(); 
container.Bind<ITaskByIdQueryProcessor>().To<TaskByIdQueryProcessor>().InRequestScope(); 
container.Bind<IPagedDataRequestFactory>().To<PagedDataRequestFactory>().InSingletonScope(); 
container.Bind<IAllTasksInquiryProcessor>().To<AllTasksInquiryProcessor>().InRequestScope(); 

Dies ist ein Konstruktor einer Klasse eines Controllers ist. Die Parameter werden beim Aufrufen des Konstruktors injiziert.

public TasksController(IAddTaskMaintenanceProcessor addTaskMaintenanceProcessor, ITaskByIdInquiryProcessor taskByIdInquiryProcessor, 
     IUpdateTaskMaintenanceProcessor updateTaskMaintenanceProcessor, 
     IPagedDataRequestFactory pagedDataRequestFactory, 
     IAllTasksInquiryProcessor allTasksInquiryProcessor) 
    { 
     _addTaskMaintenanceProcessor = addTaskMaintenanceProcessor; 
     _taskByIdInquiryProcessor = taskByIdInquiryProcessor; 
     _updateTaskMaintenanceProcessor = updateTaskMaintenanceProcessor; 
     _pagedDataRequestFactory = pagedDataRequestFactory; 
     _allTasksInquiryProcessor = allTasksInquiryProcessor; 
    } 

[Environment]
ASP.NET Web API 2.1
ninject 3.2.2

Wie die Parameter in einem Konstruktor zu überprüfen, ist falsch?

Antwort

0

Ich löste dieses Problem. Die Parameter im Konstruktor werden korrekt eingegeben. aber ein Parameter IAllTaskQueeryProcess im Konstruktor von AllTaskInqueryProcess wird nicht injiziert. damit die ASP.NET-Engine die Controller-Klasse

public AllTasksInquiryProcessor(IAllTasksQueryProcessor queryProcessor, IAutoMapper autoMapper) 
    { 
     _queryProcessor = queryProcessor; 
     _autoMapper = autoMapper; 
    } 
nicht aufrufen kann