使用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;
}
答案 0 :(得分:0)
对于瞬态分量:
如果您使用Resolve&lt;来自容器解析它们&gt;,他们将活着直到你明确释放它们。
如果使用键入的工厂创建组件,组件将一直存在,直到您在工厂调用Destroy方法,或者如果在工厂的生命周期结束之前没有调用它,那么组件将一直存在。
如果瞬态组件在构造函数中被解析为依赖关系,或者作为属性的setter解析,则组件将一直存在,直到包含的组件生存期结束。
这假设使用了默认发布策略。如果使用NoTracking删除策略,容器将不会保留对组件的引用。 (建议不要使用此功能。)
我希望这能回答你的问题。