一次性请求范围的对象

时间:2015-01-30 09:23:00

标签: c# asp.net spring.net

我需要正确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,这是我的情况,因为我在请求结束时从不处理上下文。

我是否遗漏了在请求/会话级处理对象的事情?

0 个答案:

没有答案