鉴于
public class a : IDisposable
{
public static int counter;
public a()
{
counter++;
}
~a()
{
counter--;
}
public void Dispose()
{
}
}
注册:
application_container = new WindsorContainer( );
application_container.Register( Component.For<a>( ).ImplementedBy<a>( ).LifeStyle.PerWebRequest );
web.config中的正确内容:
<add name="PerRequestLifestyle"
type="Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule,
Castle.MicroKernel"/>
使用从SVN构建的Castle版本。 使用网页代码:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
GC.Collect( 2 );
var a = Global.application_container.Resolve<Global.a>();
Response.Write( Global.a.counter.ToString() );
}
}
我得到了〜a()没有调用,而RedGate分析器显示a不是 被收集,它的参考卡住了 AllComponentsReleasePolicy.instance2burden。
我不是第一个遇到这个问题的人
答案 0 :(得分:1)
我们在2.1中发现了一个类似的问题,似乎已经修复了,升级应该修复它。