2012-09-26 1 views
1

유니티가 삽입되지 않는 이유 또는 생성자에 매개 변수가 있다는 사실을 무시하고있는 이유를 알 수 없습니다. 나는이 post을 보았지만, NinJect에 대해 더 많이 말했지만 Unity와 Vs2012에서 비슷한 문제가 있다고 생각하게 만듭니다. 유니티가 작동하는 것을 알았습니다. 왜냐하면 내 Application_Start 코드에서, 단일성 등록 후에 인터페이스를 단일체에서 해결하고 모든 객체가 필요로하기 때문입니다. 매개 변수가있는 컨트롤러의 생성자가 무시되는 이유를 모르겠습니다. 컨트롤러를 단일체로 등록합니다. 그 컨트롤러를 치려고하면 No parameterless constructor defined for this object. 오류가 발생합니다.MVC4 및 "이 개체에 대해 정의 된 매개 변수없는 생성자가 없습니다." Unity를 사용하여 종속성을 주입하는 데 오류가 있습니까?

누구든지이 동일한 문제가 발생하면 궁금합니다.

+1

어떤 종류의 '컨트롤러'에 대해 이야기하고 있습니까? 그것은'System.Web.Mvc.Controller' 또는'System.Web.Http.ApiController'입니까? 그리고 당신의 현재 등록은 무엇입니까? 'IDependencyResolver '를 어떻게 등록합니까? – Steven

+1

코드없이도 도움이 될 것 같습니다 ... – Cybermaxs

+0

@Steven, 내 생각에 IDependencyResolver를 등록하는 방법에 대한 질문은 IDPendencyScope를 사용하여 ApiController에 내 Resolver를 등록해야했기 때문에 발생했습니다. 표준 컨트롤러를 사용하고 있습니다. 그래서 그것을 SetResolver()와 함께 등록하면 효과가있었습니다. 감사! – DDiVita

답변

2

그가 올바른 방향으로 나를 조종했기 때문에 소품을 Steven에게 주어야하지만 기본적으로 SetResolver 메서드를 사용하여 표준 컨트롤러에 등록하는 대신 ApiController으로 내 해결자를 등록하는 방법을 사용하고 있습니다.

+4

당신의 아빠는 누구입니까? :피 – Steven

0

동일한 문제가있었습니다. Unity와 Unity를 설치했습니다 .Mvc4. Unity와 관련된 모든 것을 제거하고 Unity.Mvc4 만 다시 설치했으며 모든 것이 광고 된대로 작동했습니다.

0

Unity에서이 오류가 발생하면 Global.asax로 이동하여 다음 코드를 작성하십시오. 부트 스트 래퍼를 초기화하십시오.

protected void Application_Start() 
    { 
     AreaRegistration.RegisterAllAreas(); 
     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
     RouteConfig.RegisterRoutes(RouteTable.Routes); 
     BundleConfig.RegisterBundles(BundleTable.Bundles); 
     Bootstrapper.Initialise(); 





    } 
관련 문제