我需要正确Dispose
在我的MVC 5应用程序中request
级范围内实例化的对象。
我已将对象声明如下:
<object id="dataContext" singleton="false" scope="request" type="MyDisposableObject, MyAssembly" factory-object="dataContextFactory" factory-method="Build" destroy-method="Dispose" ></object>
<object id="dataContextFactory" scope="application" type="MyFactoryClass, MyAssembly"/>
DataContextFactory的代码如下(名称中的掩码很少)
public class DataContextFactory: DbConfiguration
{
public IDisposable Build()
{
return new Wrapper();
}
private class Wrapper : MyDisposableObject //: DbContext
{
protected override void Dispose(bool disposing)
{
base.Dispose(disposing); //BREAKPOINT HERE
}
public new void Dispose()
{
base.Dispose(); //BREAKPOINT HERE
}
}
}
这个实验告诉我,通过在Dispose方法上放置一个断点,当我结束页面请求时,对象(最终是EF6 DbContext
)不会被处理掉。
我看过SPRNET-318,但对我来说有点模棱两可。错误标题是&#34;带有请求或会话scopr的IDisposable单例不会被处置&#34;,这符合我的情况;但是correlated forum topic说的是关于调用WebApplicationContext.Dispose
,这是不我的情况,因为我在请求结束时从不处理上下文。
我是否遗漏了在请求/会话级处理对象的事情?