2013-05-11 2 views
0

J'ai un BlobStream créé à partir de la méthode OpenWriter.Comment activer la recherche dans le flux Blob Azure

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

return blob.OpenWrite(); 

En utilisant ce flux je voudrais chercher ou régler la position, mais chaque fois que je le fais-je obtenir un NotSupportedException. Après avoir fait quelques recherches, j'ai trouvé que le canSeek est défini sur false, ce qui provoque ce problème. Mais, le CanSeek est faux seulement si la longueur est inconnue. Mais la longueur est connue lorsque je lance le débogueur.

Pourquoi CanSeek est-il faux? Comment puis-je le rendre à true?

+0

Quelle version de la bibliothèque client utilisez-vous? Quel type est le blob sous-jacent (Block ou Page)? Dans le dernier client v2.0, il semble que vous ne pouvez rechercher qu'un flux d'écriture sur les blobs de page, ce qui peut être impossible. –

+0

J'utilise un bloc blob. –

+0

Y a-t-il de grandes différences entre le bloc et la page? –

Répondre

0

Vous pouvez rechercher dans un blob de page - il existe un support explicite pour cela dans la classe BlobWriteStreamBase.

Je pense que vous pouvez également lire & écrire à des parties d'un blob bloc spécifié en utilisant les en-têtes HTTP Range, ce qui serait effectivement la même chose que la recherche. Mais je pense que vous devriez l'implémenter vous-même.

+0

Il y a des limites à la recherche avec page blob. Corrigez-moi si je me trompe, mais je pense que vous ne pouvez lire et écrire que 512 octets à la fois. Cela signifie que la recherche doit être faite à chaque incrément de position de 512. (512 * x, où x est un nombre entier) –

Questions connexes