依赖注入: - 尝试创建类型为' controller'的控制器时发生错误。

时间:2015-04-13 19:56:42

标签: c# asp.net-mvc dependency-injection unity-container

控制器:

private readonly IService _service;

public DisplayController(IService service)
{
    _service = service;
}

public ActionResult Index(int resultid)
{

    var response = _service.GetQuizResults(resultid);

    var alltheresults = Mapper.Map<Services.Contracts.Model.Quiz, Quiz>(response);

    return View(alltheresults);
}

错误:

  

InvalidOperationException:尝试创建时发生错误   控制器类型   &#39; Travelers.eBusiness.RiskQuiz.Web.Controllers.DisplayController&#39 ;.使   确保控制器具有无参数的公共构造函数

经过大量的谷歌搜索后,我确实添加了另一个构造函数:

public DisplayController()
{

}

确实解决了错误,但_service变为空。

1 个答案:

答案 0 :(得分:4)

看起来Unity无法找到IService的已注册实现,因此无法创建控制器的实例。它当然可以使用刚刚添加的无参数构造函数创建一个,但是它不会注入IService的实例。

您必须在应用程序启动时注册IService的实现,并删除无参数构造函数。

请参阅:setting up the Unity container