2012-06-26 3 views
5

이 코드가 스트림에서 코드에 의해 삭제 된 것은 아닙니다. 사용 중이거나 dispose를 호출 한 것입니다.System.ObjectDisposedException : 닫힌 스트림에 액세스 할 수 없습니다.

스트림이이 코드 외부에서 종료되었을 수 있으며이 예외가 여전히 발생합니까?

+1

예 정확히 .... –

+0

@PhilipDaubmeier이 ... 5백메가바이트에 임계 값을 설정하고 있습니다. 이것은 닫히지 않을 가능성이있는 유효한 질문이며 대답이 필요합니다. 너는 처음이었다. 그 신용을 가져 가라. – David

+1

코드를 표시하면 문제의 출처를 알려줄 수 있습니다. –

답변

5

내 의견에 답할 것입니다. 예, 스트림은 코드 외부에서 폐쇄 될 수도 있으므로 System.ObjectDisposedException을 확인하십시오.

예를 들어 네트워크 연결과 연결된 스트림이 갑자기 중단되는 경우를 상상해보십시오. 구현에 따라서는, 스트림을 닫아 스트림에 액세스하고있는 경우는 그 특정의 예외를 슬로우 할 수 있습니다.

1

스트림이이 코드 외부에서 종료되었을 수 있으며이 예외가 여전히 발생합니까?

예. 예를 들어, 다른 스트림에서 스트림을 래핑하고 "래퍼"스트림을 처리하는 경우 발생할 수 있습니다. 많은 구현에서는, 랩하는 스트림을 처리합니다.

"랩핑 된"스트림에 쓰려고하면이 오류 메시지가 나타납니다.

중 하나를 사용하거나 dispose를 호출하여

또한 Close() 방법이 개체에 대해 같은 Stream, DisposeClose과 일반적으로 동일한 기능을 수행하는 것을 실현. 스트림을 닫으면 스트림이 삭제됩니다.

0

이 오류는 requestLengthDiskThreshold가 스트림을 통해 업로드/처리하려는 파일의 크기보다 작은 경우에도 발생할 수 있습니다. 이것은 당신의 Web.config에 정의되어

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

여기에 2 매개 변수에 대한 설명에서 loook 경우

https://msdn.microsoft.com/en-us/library/system.web.configuration.httpruntimesection.requestlengthdiskthreshold(v=vs.110).aspx

당신이 (이 입력 스트림 버퍼링 임계 값을 설정하는 것을 볼 수 있습니다 킬로바이트). 기본값은 80KB이므로이 값을 설정하지 않고 예를 들어 ajax가 80KB보다 큰 파일을 업로드하려고 시도하면 임계 값 한도가 충족되면 스트림이 닫히기 때문에 System.ObjectDisposedException 예외가 발생합니다 . 다른 사람보다 먼저 당신이 대답에 그를 확대해야 - 내 경우

나는

관련 문제