2013-03-20 1 views
1

내가 잘못하고있는 것을 파악할 수 없습니다.웹 서비스에 액세스 할 때 매개 변수가없는 생성자가 정의되지 않았습니다.

컨트롤러 코드. 이 객체에 대해 정의

public class HomeController : Controller 
{ 
    private readonly SoapWebService _db; 

    public HomeController(SoapWebService db) 
    { 
     _db = db; 
    } 

    public ActionResult Index() 
    { 
     return View(_db.GetAllItems("APIKey").ToList()); 
    } 
} 

보기 코드

@model IEnumerable<ProjectName.ServiceName.ItemName> 

@foreach (var item in Model) { 
    @Html.DisplayFor(item => item.Title) 
} 

오류

어떤 매개 변수가없는 생성자 없습니다.

설명 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 오류 및 코드에서 시작된 위치에 대한 자세한 정보는 스택 추적을 검토하십시오.

예외 정보 예외 : System.MissingMethodException :이 개체에 대해 정의 된 매개 변수없는 생성자가 없습니다.

소스 오류 :

처리되지 않은 예외가 현재 웹 요청을 실행하는 동안 생성되었습니다. 예외의 출처와 위치에 관한 정보는 아래의 예외 스택 추적을 사용하여 식별 할 수 있습니다.

+0

무엇 DI 도구를 사용하는 : DI를 사용하지 않고

, 당신은 어떤 의존성 자체를 인스턴스화하는 매개 변수가없는 생성자가 필요합니다? StructureMap? 너는 그 말조차하지 않는다. – manojlds

+0

이것은 오타입니까? @ Html.DisplayFor (modelItem => item.Title)? 그것은 @ Html.DisplayFor (item => item.Title)일까요? –

+0

그건 오타 였고 의존성 인젝터를 사용하지 않았을 수도 있습니다. 아마도 여기가 잘못 될 것입니다. –

답변

3

종속성 삽입 기능 (프레임 워크 또는 수동 스핀)을 사용하지 않으면 매개 변수없는 생성자가 없기 때문에 컨트롤러를 인스턴스화 할 수 없습니다.

종속성 인젝터는 컨트롤러 전용 생성자로 전달하기 위해 SoapWebService의 인스턴스를 생성합니다.

public class HomeController : Controller 
{ 
    private readonly SoapWebService _db; 

    public HomeController() 
     : this(new SoapWebService()) { } 

    public HomeController(SoapWebService db) 
    { 
     _db = db; 
    } 

    public ActionResult Index() 
    { 
     return View(_db.GetAllItems("APIKey").ToList()); 
    } 
} 
+0

감사합니다. 매개 변수없는 생성자를 추가하면 오류가 추가되지만 오류 추상 클래스 나 인터페이스 'SoapService'의 인스턴스를 만들 수 없습니다. –

관련 문제