【问题标题】:How to troubleshooting Construction Injection using Ninject如何使用 Ninject 对构造注入进行故障排除
【发布时间】:2016-08-13 14:24:47
【问题描述】:

我遇到构造注入失败的问题。

当我调用 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();

这是一个Controller类的构造函数。调用构造函数时注入参数。

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
N注入 3.2.2

如何检查构造函数中哪个参数错误?

【问题讨论】:

    标签: ninject.web.mvc


    【解决方案1】:

    我解决了这个问题。构造函数中的参数被正确注入。但未注入 AllTask​​InqueryProcess 的构造函数中的参数 IAllTask​​QueryProcess。这样 ASP.NET 引擎就不能调用控制器类

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

    【讨论】:

      猜你喜欢
      • 2011-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多