2013-05-11 3 views
0

OpenWriter 메서드에서 생성 된 BlobStream이 있습니다.Azure Blob 스트림에서 검색하는 방법

var blob = CloudContainer.GetBlobReference(name)); 
if (blob == null) 
{ 
    return null; 
} 

return blob.OpenWrite(); 

이 스트림을 사용하여 위치를 찾거나 설정하려고합니다.하지만이 작업을 수행 할 때마다 NotSupportedException이 발생합니다. 몇 가지 연구를 한 후 canSeek이 false로 설정되어이 문제가 발생하는 것으로 나타났습니다. 그러나 CanSeek는 길이가 알려지지 않은 경우에만 거짓입니다. 하지만 길이는 내가 디버거를 실행할 때 알려졌다.

왜 CanSeek이 거짓입니까? 어떻게하면 true로 설정할 수 있습니까?

+0

어떤 클라이언트 라이브러리 버전을 사용하고 있습니까? 기본 BLOB (블록 또는 페이지) 유형은 무엇입니까? 최신 v2.0 클라이언트에서는 페이지 얼룩에 대한 쓰기 스트림 만 검색 할 수있는 것처럼 보이기 때문에 가능하지 않을 수 있습니다. –

+0

블록 블랍을 사용하고 있습니다. –

+0

블록과 페이지간에 큰 차이가 있습니까? –

답변

0

페이지 블롭 내에서 검색 할 수 있습니다. BlobWriteStreamBase 클래스에 명시 적으로 지원됩니다.

당신은 또한 헤더를 사용하여 Block blob의 지정된 부분에 쓰기를 할 수 있다고 생각합니다. 이는 사실상 찾는 것과 동일합니다. 하지만 당신이 직접 구현해야한다고 생각합니다.

+0

페이지 블롭을 찾는 데는 한계가 있습니다. 잘못된 것이면 나를 바로 잡아라.하지만 한 번에 512 바이트 만 읽고 쓸 수 있다고 생각한다. 이는 탐색이 512의 각 위치 증가분에 대해 수행되어야 함을 의미합니다. (512 * x, x는 정수) –