2012-04-05 16 views
1

Ich erhalte eine Liste von IListBlobItems mit CloudBlobContainer.ListBlobs. Ich bin dann über jeden Eintrag Looping um die Größe des Blobs zu zeigen, mit dem folgenden Code:Microsoft.WindowsAzure.StorageClient.CloudBlockBlob.DownloadBlockList gibt 0 Blöcke zurück

 foreach (IListBlobItem item in blobs) 
     { 
      if (item.GetType() == typeof(CloudBlobDirectory)) 
      { } 
      else if (item.GetType() == typeof(CloudBlockBlob)) 
      { 
       CloudBlockBlob blockBlob = (CloudBlockBlob)item; 
       IEnumerable<ListBlockItem> blocks = blockBlob.DownloadBlockList(new BlobRequestOptions { BlobListingDetails = BlobListingDetails.All }); 
       Console.WriteLine(blockBlob.Name.PadRight(50, ' ') + 
        blocks.Sum(b => b.Size)); 
      } 
      else 
      { 
       Console.WriteLine(item.Uri.LocalPath); 
      } 

     } 

Allerdings, wenn ich die Zählung auf der Variable blocks überprüfen, es ist immer 0. Warum ist das so?

Antwort

5

Ich glaube (nicht 100% sicher), dass DownloadBlockList() nur gültig ist, wenn der Blob ursprünglich in Blöcken und nicht auf einmal hochgeladen wurde. Das könnte der Grund sein, warum du keine Blockaden zurückbekommst.

In jedem Fall scheinen Sie sowieso nur die Gesamtgröße des Blobs zu wollen. So mit der blob.Properties.Length Eigenschaft kann ein einfacher Ansatz:

CloudBlockBlob blockBlob = (CloudBlockBlob)item; 
blockBlob.FetchAttributes(); 
Console.WriteLine(blockBlob.Name.PadRight(50, ' ') + blockBlob.Properties.Length); 
+0

Perfekt! Genau das, wonach ich suche. –

0

Ich würde denken, dass Sie nach einem CloudBlob anstelle eines CloudBlockBlob-Typs suchen sollten. Wenn Sie einen anderen else hinzufügen, wenn Sie damit die Größen erhalten? Wenn das nicht der Fall ist, sehen Sie, dass der Code in den else geht, wenn und die Größe b.size gerade null ist?

+0

Danke für die Antwort, aber ich denke nur CouldBlockBlobs Blöcke haben, though. Tatsächlich hat der CloudBlob keine DownloadBlockList-Methode. Nur der CloudBlockBlob verfügt über diese Methode. –

Verwandte Themen