새로운 RenderAction 메서드로 Castle Windsor Controller Factory를 사용할 때 문제가 발생합니다. 다음과 같은 오류 메시지가 나타납니다.Castle Windsor 컨트롤러 팩토리 및 RenderAction
컨트롤러 'MyController'의 단일 인스턴스를 사용하여 여러 요청을 처리 할 수 없습니다. 사용자 정의 컨트롤러 팩토리가 사용 중이면 각 요청에 대해 컨트롤러의 새 인스턴스를 생성해야합니다.
이 내 컨트롤러 공장의 코드는 다음과 같습니다
public class CastleWindsorControllerFactory : DefaultControllerFactory
{
private IWindsorContainer container;
public CastleWindsorControllerFactory(IWindsorContainer container)
{
this.container = container;
}
public override IController CreateController(RequestContext requestContext, string controllerName)
{
return container.Resolve(controllerName) as IController;
}
public override void ReleaseController(IController controller)
{
this.container.Release(controller);
}
}
사람이 나는 그것이 RenderAction와 함께 작동하도록 만들 필요가 변경되는지 알고 있나요?
여러 요청에 대해 이야기하기 때문에 오류 메시지가 약간 이상하지만 RenderAction이 실제로 다른 요청 (BeginRequest가 다시 발생하지 않음)을 생성하지 않는다고 알 수 있습니다.
정확합니다. Windsor 구성 요소의 기본 라이프 스타일은 싱글 톤입니다. – PatrickSteele
유창한 API http://stw.castleproject.org/Windsor.Registering-components-one-by-one.ashx?HL=transient#Configuring_components_lifestyle_3을 통해 임시로 등록 할 수도 있습니다. 등록을 위해 XML을 사용하는 것은 모범 사례로 간주되지 않습니다. –