2013-07-26 2 views
1

Azure에서 블록 모양을 다운로드하는 가끔 예외가 발생합니다. 예외 메시지는 다음과 같이 진행됩니다StorageException : Blob 데이터가 손상되었습니다. 잘못된 바이트 수를 받았습니다 - 내 코드 또는 푸른 서버 문제의 버그입니까?

  1. 이는 푸른 서버 측에서 문제인가, 아니면 내 클라이언트 코드에서 버그로 인해 수 :
    StorageException: Blob data corrupted. Incorrect number of bytes received 
    

    내 질문

    은?
  2. 누구든지 전에 본적이 있고 어떤 아이디어가 있습니까 수정 사항은 무엇이되어야합니까?

이 문제에 대한 추가 정보 - 나중에 동일한 BlockBlob 순간을 읽으려고하면 같은 정확한 코드로 잘 다운로드됩니다.

감사합니다, 루이

+0

, 나는 잠재적으로 당신은 내가 DownloadRange를 호출 할 때 나는이 문제를 가져 스토리지 테이블 – LukeHennerley

+0

에 이진의 잘못된 설정을 가지고 말할 것입니다. 이 호출은 바이트 만 가져 오므로 실제 파일의 형식이 무엇인지는 모르겠습니다. 어쩌면 당신이 @LukeHennerley를 의미하는지 이해하지 못했을 것입니다. – rui

+0

저장 테이블에 데이터를 저장할 때 1 바이트 또는 2 바이트를 놓친 것이므로 개체가 손상 될 수 있습니다. 그러나 문제는'DownloadRange'와 같고 실제로 BLOB의 부족한 범위를 다운로드하고 있습니다. '다시 BLOB의 ** 손상 **을 가져올 데이터. – LukeHennerley

답변

1

나는 이것이 사용자 코드 때문이 아니라는 것을 확인했습니다. Azure API가 BLOB를 다운로드하기 위해 만드는 다운로드 연결이 일찍 끊어져 잘못된 바이트 수 문제가 발생했습니다.

이 질문을 제기 한 이후로 내 서버가 계속 실행되고 있으며 문제가 완전히 사라졌습니다. 내 서버는 이전과 동일한 요청 볼륨에서 정확히 실행됩니다. 당신이 당신의 바이너리 데이터를 저장하는 방법에 따라

감사합니다, 루이

1

이 예외는 전송시 데이터 무결성 문제를 나타냅니다. 자세한 내용은 ErrorCode, ExtendedErrorInformationStatusCode 속성을 확인하십시오.

Windows Azure Blob MD5 Overview은 데이터 무결성을 보장하기 위해 선택적 MD5 검사를 적용하는 방법을 설명합니다. 이것은 HTTP 연결에만 적용됩니다. HTTPS는 전송 계층 보안을 제공하므로 중복되는 것처럼 HTTPS를 통해 연결하는 동안 추가 MD5 검사가 필요하지 않습니다.

이 문제를 처리하는 가장 적절한 방법은 일시적인 오류 처리를 이용하는 것입니다. Enterprise Library 6은 내결함성을 달성하는 데 사용할 수있는 Transient Fault Handling Application Block을 제공합니다. 추가 정보는 Dealing with Windows Azure Storage transient faults을 참조하십시오.