c# – StructureMap InstanceScope.Hybrid和IDisposable
发布时间:2020-12-15 07:56:21 所属栏目:百科 来源:网络整理
导读:我正在开发一个asp.net-mvc应用程序. linq数据上下文通过结构图传递到我的服务对象中.我已经准备好了混合动力的范围.这一切都很好. protected override void configure(){ ForRequestedTypeAetherDataContext() .TheDefaultIs(() = new AetherDataContext())
我正在开发一个asp.net-mvc应用程序.
linq数据上下文通过结构图传递到我的服务对象中.我已经准备好了混合动力的范围.这一切都很好.
protected override void configure() { ForRequestedType<AetherDataContext>() .TheDefaultIs(() => new AetherDataContext()) .CacheBy(InstanceScope.Hybrid); } 问题是我一直在运行内存,我想知道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(); } 我不太确定我这样做是正确的,我猜这个新方法会被调用吗? 无论如何,两个制动点都没有被击中.但是,每个请求都会调用同一个类的构造函数.我不太理想. 解决方法
这几乎是我2天前提出的问题的精确副本:
Session containing items implementing IDisposable
InstanceScope.Hybrid只将对象存储在HttpContext.Current.Items中(如果存在)或ThreadLocal存储,否则InstanceScope.HttpSession的工作方式与使用HttpSession和ThreadLocal的方式不同.项目集合按照请求生存,因此如果您实现我的问题中指出的模式,您应该在当前请求的末尾看到Dispose fired. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |