2016-07-26 4 views
0

블로그 저장소 컨테이너에 큰 파일을 저장하고 있습니다.Azure BlobStorage 스트림이 파일에서 닫힘> 25MB

나중에 WebJob (Azure에서도 사용)을 사용하여 CloudBlockBlob.OpenRead()을 사용하여이 각 블럭을 읽습니다.이 숫자는 Stream입니다.

스트림을 열고 읽습니다. . 문제는 파일이 25메가바이트 함께 aprox보다 큰 경우, 시간 확인을 읽은 후, 그것은 (읽기 중)이 예외가 발생한다는 것입니다 :

처리되지 않은 예외 : System.Net.Http.HttpRequestException : 오류 콘텐츠를 스트림에 복사합니다. ---> System.ObjectDisposedException : 닫힌 스트림에 액세스 할 수 없습니다. System.Net.Http.StreamToStreamCopy.StartAsync()에서 System.IO.MemoryStream.get_Position()에서 System.IO .__ Error.StreamIsClosed() 에서

이 파일이 다른 휴관 것 같다 측면!

왜 이런 일이 발생합니까? 타임 아웃이 있습니까? 이 상황을 어떻게 처리 할 수 ​​있습니까?

답변

1

연결 속도에 따라 응답 시간이 초과되었을 수 있습니다. 이것은 약 25MB의 파일에 대한 귀하의 진술을 뒷받침합니다. 해결하려면 ServerTimeout 및/또는 MaximumExecutionTimeBlobRequestOptions으로 증가 시키십시오.

+0

내가 파일을 다운로드하지는 않지만 cloudBlobBlock.OpenRead()를 사용하여 스트림을 여는 것이 중요합니다. 이것은 요구 사항입니다. – SuperJMN

+1

BlobRequestOptions ServerTimeout 및 Maximum execution time을 설정해 보셨습니까? https://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storage.blob.blobrequestoptions_members(v=azure.10).aspx –

+0

그리고 사용중인 코드를 게시하십시오. –

0

이러한 옵션을 사용하여 OpenRead() 메서드를 호출 했으므로 더 이상 시간이 초과되지 않은 것으로 보입니다!

return block.OpenRead(null, new BlobRequestOptions() 
      { 
       ServerTimeout = TimeSpan.MaxValue, 
       RetryPolicy = new ExponentialRetry(TimeSpan.FromSeconds(5), 4),     
       MaximumExecutionTime = TimeSpan.FromHours(3) 
      });