使用Castle Windsor Controller Factory和新的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不再被触发)。
答案 0 :(得分:10)
我相信Castle Windsor的默认配置是Singleton。您需要在Web.Config中将此更改为Transient,或将此属性更改为您的班级[Transient]
。