对于自定义句柄异常过滤器,暂时的生活方式是否正常?

时间:2012-12-03 20:00:49

标签: castle-windsor ioc-container castle

使用castle windsor我将HandleException Filter添加到windsor容器中,这样我就可以将ILogger注入到我的HandleExceptionFilter中。我无法使用LifestylePerWebRequest,因为我会得到这个error。我想知道我的HandleExceptionFilter是否会因为Transient而被正确释放?

 public override IController CreateController(RequestContext requestContext, string controllerName)
        {

            var controller = base.CreateController(requestContext, controllerName);

            var c = controller as Controller;

            if (c != null)
            {
                c.ActionInvoker = new ErrorHandlingActionInvoker(_kernel.Resolve<IExceptionFilter>());
            }

            return controller;
        }

1 个答案:

答案 0 :(得分:0)

对于瞬态分量:

如果您使用Resolve&lt;来自容器解析它们&gt;,他们将活着直到你明确释放它们。

如果使用键入的工厂创建组件,组件将一直存在,直到您在工厂调用Destroy方法,或者如果在工厂的生命周期结束之前没有调用它,那么组件将一直存在。

如果瞬态组件在构造函数中被解析为依赖关系,或者作为属性的setter解析,则组件将一直存在,直到包含的组件生存期结束。

这假设使用了默认发布策略。如果使用NoTracking删除策略,容器将不会保留对组件的引用。 (建议不要使用此功能。)

我希望这能回答你的问题。