温莎城堡控制器工厂和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]

链接地址: http://www.djcxy.com/p/59857.html

上一篇: Castle Windsor Controller Factory and RenderAction

下一篇: Why do all the C files written by my lecturer start with a #?