Sim*_*row 7 c# linq structuremap asp.net-mvc inversion-of-control
我正在开发一个asp.net-mvc应用程序.linq数据上下文通过结构图传递到我的服务对象中.我已经准备好了混合动力的范围.这一切都很好.
protected override void configure()
{
ForRequestedType<AetherDataContext>()
.TheDefaultIs(() => new AetherDataContext())
.CacheBy(InstanceScope.Hybrid);
}
Run Code Online (Sandbox Code Playgroud)
问题是我继续运行我的内存,我想知道IDisposable接口是否实际被调用.
有人有任何想法吗?
没有人对可能导致我记忆异常的事情有任何其他想法吗?
更新:
所以一些额外的信息,我只是在我的数据上下文填充了几个方法,在那里放置制动点.
protected override void Dispose(bool disposing)
{
Debug.WriteLine("Disposing: " + DateTime.Now);
base.Dispose(disposing);
}
public new void Dispose()
{
Debug.WriteLine("Disposing: " + DateTime.Now);
base.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
我不太确定我这样做是正确的,我猜这个新方法会被调用吗?
无论如何,两个制动点都没有被击中.但是,每个请求都会调用同一个类的构造函数.我不太理想.
这几乎是我两天前提出的问题的精确副本:包含实现 IDisposable 的项目的会话
InstanceScope.Hybrid 仅将对象存储在 HttpContext.Current.Items 中(如果存在)或 ThreadLocal 存储中,否则,InstanceScope.HttpSession 的工作方式相同,只是使用 HttpSession 和 ThreadLocal。项目集合根据请求而存在,因此如果您实现我的问题中指出的模式,您应该会看到 Dispose 在当前请求结束时触发。