温莎城堡控制器工厂和RenderAction
当我的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不再被触发)。
我相信Castle Windsor的默认配置是Singleton。 您需要在Web.Config中将其更改为Transient,或者将该属性放在您的类[Transient]
。
上一篇: Castle Windsor Controller Factory and RenderAction
下一篇: Why do all the C files written by my lecturer start with a #?