2011-02-27 4 views
4

IDependecyResolverIControllerFactory의 인스턴스를 얻기 위해 노력의 구현을 얻기 위해 노력하고있다?ASP.NET MVC 3 : IDepencyResolver 내가 <strong>DefaultControllerFactory</strong> 등록 있지만 IControllerFactory

Global.asax에 :

ControllerBuilder.Current.SetControllerFactory(typeof(DefaultControllerFactory)); 
DependencyResolver.SetResolver(new StructureMapDependencyResolver()); 

확인자 :

public class StructureMapDependencyResolver : IDependencyResolver 
{ 
    public static Func<Type, object> GetServiceViaDepencencyCallback = t => 
    { 
     throw new NotImplementedException(
      "StructureMapDependencyResolver is not configured!"); 
    }; 

    public static Func<Type, IEnumerable<object>> GetServicesViaDepencencyCallback = t => 
    { 
     throw new NotImplementedException(
      "StructureMapDependencyResolver is not configured!"); 
    }; 

    public object GetService(Type serviceType) 
    { 
     return GetServiceViaDepencencyCallback(serviceType); 
    } 

    public IEnumerable<object> GetServices(Type serviceType) 
    { 
     return GetServicesViaDepencencyCallback(serviceType); 
    } 
} 

슬로우 오류 : MVC3에서

StructureMap Exception Code: 202 No Default Instance defined for PluginFamily System.Web.Mvc.IControllerFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

답변

8

의 DependencyRes olver (서비스 위치 지정자)는 적절한 유형을 찾으려고 시도하는 데 사용됩니다. 유형을 찾을 수없는 경우 레거시 코드 인 ControllerBuilder.Current 인스턴스를 사용하여 검색을 재개합니다. 여기서 중요한 점은 DependencyResolver, StructureMap 컨테이너를 통해 확인한다는 것입니다. MVC3에서는 유형을 찾을 수없는 경우 DependencyResolver가 null을 반환해야하므로 컨테이너에서 예외를 잡는 것은 프레임 워크의 책임이 아닙니다.