내 MVC 응용 프로그램에 DI를 도입하고 있으며 사용자 정의 컨트롤러 팩토리에서 컨트롤러를 인스턴스화하는 데 문제가 있습니다. 재정의 된 "GetControllerInstance"가 호출되지 않는 것 같습니다.MVC - 성 Windsor 컨트롤러 팩터 리 생성 -이 객체에 대해 정의 된 매개 변수없는 생성자 없음
누군가 내가 누락 된 내용을 말해 줄 수 있습니까?
내 컨트롤러 공장 :
public class WindsorControllerFactory : DefaultControllerFactory
{
public WindsorControllerFactory()
{
var controllerTypes = from t in AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetTypes())
where typeof (IController).IsAssignableFrom(t)
select t;
foreach (Type controllerType in controllerTypes)
{
ApplicationContainer.Container.AddComponentLifeStyle(controllerType.FullName, controllerType,
LifestyleType.Transient);
}
}
protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType)
{
if(controllerType !=null)
{
return (IController) ApplicationContainer.Container.Resolve(controllerType);
}
return base.GetControllerInstance(requestContext, controllerType);
}
}
}
위해 Application_Start :
ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory());
}
이 컨트롤러 공장 인스턴스화하고 있지만이 컨트롤러를 해결하는 데 사용되지 않는 것으로 보인다. 나는 'GetControllerInstance'에 중단 점을 배치했으나 결코 부딪치지 않습니다.
결과는이 개체에 대해 정의 된 매개 변수없는 생성자입니다. 예외는
을 던져갱신 :
나는이에 GetControllerInstance을 변경 :
private WindsorContainer _container;
public WindsorControllerFactory(WindsorContainer container)
{
_container = container;
_container.Register(AllTypes.Of<IController>().FromAssembly(
typeof(BaseFactoryController).Assembly).Configure(
c => c.Named(c.Implementation.Name.ToLowerInvariant()).LifeStyle.Transient));
}
지금 내가 널 controllerType를 무시해야한다?! 댓글을 달지 않은 경우 :
//base.GetControllerInstance(requestContext, controllerType);
내 .js 파일을 컨트롤러로 처리하기 시작합니다.
protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType)
{
if (controllerType == null)
{
return null;
}
//base.GetControllerInstance(requestContext, controllerType);
return (IController) _container.Resolve(controllerType);
}
js를 컨트롤러로 취급하는 것에 대해, 같은 질문, http://stackoverflow.com/questions/1598421/why-is-castle-windsor-trying-to-resolve-my-content-and-scripts-folder와 동일한 권장 사항 -as-a-co –