2011-12-08 3 views
0

IoC 용 StructureMap을 사용하고 있으며 일반 컨트롤러에서는 정상적으로 작동하지만 영역에서는 작동하지 않습니다.ASP.NET MVC 영역에서 StructureMap 사용

public class AccountController : Controller 
{ 
    private readonly IFormsAuthenticationService formsService; 
    private readonly IMembershipService membershipService; 

    public AccountController(IFormsAuthenticationService formsService, IMembershipService membershipService) 
    { 
     this.formsService = formsService; 
     this.membershipService = membershipService; 
    } 
    ... 
} 

을 그리고 여기 오류입니다 : 내가 관리 영역에서 다음 AccountController이 어떤 도움을 크게 감상 할 수

System.InvalidOperationException: An error occurred when trying to create a controller of type 'Foo.Areas.Administration.Controllers.AccountController'. Make sure that the controller has a parameterless public constructor. ---> System.MissingMethodException: No parameterless constructor defined for this object.

은!

편집

StructureMapMembershipProvider를 확인할 수 없습니다.

For<MembershipProvider>().Use(Membership.Providers["AspNetSqlMembershipProvider"]); 

답변

0

내가 행복을 사용하고 있기 때문에이 부분에 문제가 있음을 의심 :
는 여기에 솔루션입니다. 순수 IOC 문제 일 가능성이 높습니다. 삽입 된 서비스 중 하나가 컨테이너에서 해결할 수없는 경우이 오류가 발생합니다. 컨테이너가 생성자의 서명과 일치 할 수 없으며 존재하지 않는 빈 생성자로 폴백하려고합니다.

내 첫 번째 본능은 두 가지 주입 된 서비스를 사용할 수 있는지 확인하는 것입니다. 그 중 하나가 제대로 생성되지 않았을 가능성이 있습니다. 일반적인 원인은 회원 공급자가 데이터베이스에 연결할 수 없거나 유사한 것입니다.

진단을 위해 global.asax에서 컨테이너를 만든 후 해당 서비스를 수동으로 해결할 수 있는지 확인하십시오. 나는 SM을 모르지만 다음과 같은 것을 좋아한다 :

이 두 가지 서비스를 모두 해결할 수 있음을 스스로 확인한다.