Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.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
C# System.ObjectDisposedException:无法访问封闭流_C#_.net - Fatal编程技术网

C# System.ObjectDisposedException:无法访问封闭流

C# System.ObjectDisposedException:无法访问封闭流,c#,.net,C#,.net,这是否真的不一定意味着流已经被代码处理掉了——无论是在使用中还是通过调用dispose 该流可能已在此代码之外关闭,但此异常仍会发生 该流可能已在此代码之外关闭,但此异常仍会发生 对。例如,如果在另一个流中包装一个流,并处理“包装器”流,则可能会发生这种情况。许多实现都会处理它们正在包装的流 如果您随后尝试写入“包装”流,您将收到此错误消息 在使用或通过调用dispose 还要认识到,对于具有Close()方法的对象,例如Stream,Close和Dispose通常执行相同的功能。关闭一个流也会

这是否真的不一定意味着流已经被代码处理掉了——无论是在使用中还是通过调用dispose

该流可能已在此代码之外关闭,但此异常仍会发生

该流可能已在此代码之外关闭,但此异常仍会发生

对。例如,如果在另一个流中包装一个流,并处理“包装器”流,则可能会发生这种情况。许多实现都会处理它们正在包装的流

如果您随后尝试写入“包装”流,您将收到此错误消息

在使用或通过调用dispose


还要认识到,对于具有
Close()
方法的对象,例如
Stream
Close
Dispose
通常执行相同的功能。关闭一个流也会处理它。

所以我将我的评论作为一个答案:是的,一个流也可以从代码外部关闭,所以请确保检查
系统。ObjectDisposedException


有几种情况可能发生这种情况:例如,想象一个与网络连接相关联的流,连接突然中断。根据实现情况,如果访问流,这可能会关闭流并引发特定异常。

如果requestLengthDiskThreshold小于您试图通过流上载/处理的文件的大小,也可能发生此错误。这在web.config中定义:

<httpRuntime maxRequestLength="512000" requestLengthDiskThreshold="512000" />

如果您在此处查看第二个参数的说明:

您将看到它设置了输入流缓冲阈值(以KB为单位)。默认值为80KB,因此,如果未设置此值,并且尝试(例如)通过ajax上载大于80KB的文件,则会出现System.ObjectDisposedException异常,因为一旦满足阈值限制,流将关闭


在我的例子中,我将阈值设置为500MB…

@PhilipDaubmeier-你应该在其他人之前将其扩展到一个答案。这是一个很可能无法解决的有效问题,它需要一个答案。你是第一个。拿功劳吧,伙计!如果您向我们展示代码,我们可能会向您指出问题的根源……某个名为Close()或Dispose()的人或物。您对“内部”和“外部”代码的定义是什么?这又有什么关系呢?我犯了这个错误,将
requestLengthDiskThreshold
更改为与
maxRequestLength
相同的值,修复了它,但似乎不需要这样做?据我所知,
requestLengthDiskThreshold
只是文件在缓冲到磁盘之前可以达到的最大大小,但缓冲应该是透明的。NET不应该对我们隐瞒这一点吗?从代码的角度来看,这不只是一个流吗?我们的代码不在乎它是流到磁盘还是内存,而且这个要求可能会随着时间的推移而改变。。。。。。数十个客户端都使用500MB的RAM(在我们的系统中就是这样),这可能会导致IIS很快耗尽RAM。我只是想说清楚,并不是说你的答案是错误的,只是在这里的框架中似乎有些东西不太正确。