Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net ObjectContext和每个请求的缓存-获取ObjectDisposedException_.net_Asp.net_Entity Framework_Entity Framework 4_Objectcontext - Fatal编程技术网

.net ObjectContext和每个请求的缓存-获取ObjectDisposedException

.net ObjectContext和每个请求的缓存-获取ObjectDisposedException,.net,asp.net,entity-framework,entity-framework-4,objectcontext,.net,Asp.net,Entity Framework,Entity Framework 4,Objectcontext,我正在使用ObjectContext并将其存储在HttpContext.Current.Items集合中。我为单个请求共享ObjectContext,但框架还支持通过打开标志加载ObjectContext的新的、非缓存的、不同的副本。这样,对于某些场景,我可以完全绕过HTTPContext。这是有充分理由的;一个是我有各种使用ObjectContext的静态引用,因此每个静态都有自己的副本。其他场景是特定流程可能以孤立的方式运行,因此,它需要是唯一的 我正在尝试在页面卸载中处理共享ObjectC

我正在使用ObjectContext并将其存储在HttpContext.Current.Items集合中。我为单个请求共享ObjectContext,但框架还支持通过打开标志加载ObjectContext的新的、非缓存的、不同的副本。这样,对于某些场景,我可以完全绕过HTTPContext。这是有充分理由的;一个是我有各种使用ObjectContext的静态引用,因此每个静态都有自己的副本。其他场景是特定流程可能以孤立的方式运行,因此,它需要是唯一的

我正在尝试在页面卸载中处理共享ObjectContext,这种方法偶尔可以正常工作,但偶尔,我会在请求之间得到ObjectDisposedException,因为某些进程尝试读取数据并调用它。我的意思是,我会在这一次得到这个异常,调用回发,并在那个请求上得到错误,在下一个请求上也是如此。关闭和重新打开浏览器是有效的,但之后偶尔会出现错误。这是随机的;一次页面正常,后来就不正常了。它是同一个页面,所以它不是一个逻辑错误

这使我相信:

HttpContext.Current.Items集合未隔离到每个用户一个HttpRequest,或者: 静态会以某种方式影响进程和处理共享连接,或者: 有一个bug我需要继续研究。。。。
是否有人遇到前两项的问题?我的理解错了吗?

前两项都不应该发生。HttpContext肯定会在每个HTTP请求处理中使用,如果statics不访问HttpContext,它们不应该影响您的上下文

这种随机行为还有其他原因。确保您不会通过会话或缓存在请求之间共享代理/连接的实体,也不会在处理静态上下文后使用它们

默认情况下,所有POCO实体都是代理的,它们在内部保留对上下文的引用。动态更改跟踪和延迟加载需要对上下文的引用。所以,如果在处理上下文之前不手动分离实体,它将保留对已处理上下文的引用,并且对缓存实体上未加载导航属性的第一次数据修改或访问将引发此异常。基于EntityObject的实体也可以做到这一点