0

使用城堡 Windsor,我将 HandleException Filter 添加到 Windsor 容器中,这样我就可以将 ILogger 注入到 HandleExceptionFilter 中。我无法使用 LifestylePerWebRequest,因为我会收到此错误。我想知道我的 HandleExceptionFilter 是否会在瞬态时正确释放?

 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;
        }
4

1 回答 1

0

对于瞬态分量:

如果您使用 Resolve< > 从容器中解析它们,它们将一直存在,直到您明确释放它们为止。

如果您使用类型化工厂创建组件,则该组件将一直存在,直到您在工厂上调用 Destroy 方法,或者如果您在工厂的生命周期结束之前不调用任何方法。

如果瞬态组件被解析为构造函数中的依赖项或属性的设置器,则组件将一直存在,直到包含组件的生命周期结束。

这假定使用了默认的发布策略。如果使用 NoTracking 删除策略,容器将不会保存对组件的引用。(不推荐使用它)。

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

于 2013-01-09T22:01:53.250 回答