Windows Azure를 사용하여 문서 관리 시스템을 만들었으며 지금까지 문제가 해결되었습니다. 나는 asp.net 프런트 엔드를 통해 BLOB 저장소에 파일을 업로드하고 다운로드 할 수있었습니다.Windows Azure DownloadtoStream EOF 오류
지금 시도하려는 것은 사용자가 .zip 파일을 업로드 한 다음 해당 파일을 .zip 파일로 가져 와서 개별 파일로 저장할 수 있도록 허용하는 것입니다. 문제는 "ZipException이 처리되지 않았습니다" "헤더의 EOF"가 발생하고 이유를 알 수 없습니다.
저는 다른 많은 작업에 사용했던 ICSharpCode.SharpZipLib 라이브러리를 사용하고 있습니다.
는 여기에 기본 코드입니다 :
CloudBlob ZipFile = container.GetBlobReference(blobURI);
MemoryStream MemStream = new MemoryStream();
ZipFile.DownloadToStream(MemStream);
....
while ((theEntry = zipInput.GetNextEntry()) != null)
그리고 내가 오류를 얻을 상태로 시작하는 라인입니다. 나는 충분한 시간이지나 갔는지 확인하기 위해 10 초의 수면 시간을 추가했다.
MemStream은 디버깅 할 때 길이가 있지만 zipInput은 경우에 따라 다르지만 항상 그런 것은 아닙니다. 항상 실패합니다.
도움 주셔서 감사합니다.
데이브
내가 한 일은 .Position = 0으로 설정되어 트릭을 수행 한 것 같습니다. 나는 당신의 찾는 대답이 같은 결과를 가져올 것이라고 생각합니다. 그래도 궁금한 점이 저에게는 그렇게 논리적이지 않습니다. – david
글쎄, 모든 스트림 검색을 지원하지 않습니다. 예를 들어 웹 요청을 만든 다음 DownloadToStream()을 사용하여 Windows Azure 저장소의 비트를이 웹 요청으로 전송할 수 있습니다. 그것의 끝에서 처음으로 돌아가는 것을 찾는 것은 말이되지 않습니다. (비트는 이미 보내졌습니다). 항상 처음부터 다시 탐색 할 수는 없으므로 저장소 클라이언트 라이브러리는 스트림을 그대로 두는 것만으로 일관성있는 작업을 수행 할 수 있다고 생각합니다. – smarx
나는 그것을 볼 수 있지만 다른 용도의 맥락에서는 논리적이지 않다. 나는 DownloadtoStream (response)의 downloadtostream 함수에 익숙하다. 하지만 응답이 자동으로 위치를 재설정합니다. 몰라. 적어도 그것은 작동하고있는 것처럼 보인다. – david