2017-02-08 7 views
2

Azureのストレージコンテナ間にブロブをコピーするために、次のC#コードを記述しました。それはどんなエラーもスローしませんが、それはどちらかの出力を与えません。C#を使用してAzureのストレージコンテナ間にブロブをコピー

static void TransferBlob(string accountName, string accountKey, string containerName, string targetContainerName) 

    { 
     CloudStorageAccount storageAccount = new CloudStorageAccount(new StorageCredentials(accountName, accountKey), true); 
     CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient(); 
     CloudBlobContainer sourceContainer = cloudBlobClient.GetContainerReference(containerName); 
     CloudBlobContainer targetContainer = cloudBlobClient.GetContainerReference(targetContainerName); 
     CloudBlockBlob sourceBlob; 
     CloudBlockBlob targetBlob; 
     foreach (var blobItem in sourceContainer.ListBlobs()) 
     { 
      sourceBlob = sourceContainer.GetBlockBlobReference(blobItem.Uri.ToString()); 
      targetBlob = targetContainer.GetBlockBlobReference(blobItem.Uri.ToString()); 
      targetBlob.StartCopy(sourceBlob); 
     } 
    } 
+0

Azure Storageにはどのナゲットパッケージとバージョンが使用されていますか? – juvchan

答えて

3

あなたがuseFlatBlobListing: trueblob.Nameを使用する必要があります。

static void TransferBlob(string accountName, string accountKey, string sourceContainerName, string targetContainerName) 
{ 
    CloudStorageAccount storageAccount = new CloudStorageAccount(new StorageCredentials(accountName, accountKey), true); 
    CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient(); 
    CloudBlobContainer sourceContainer = cloudBlobClient.GetContainerReference(sourceContainerName); 
    CloudBlobContainer targetContainer = cloudBlobClient.GetContainerReference(targetContainerName); 
    if (sourceContainer.Exists() && targetContainer.Exists()) 
    { 
     foreach (IListBlobItem item in sourceContainer.ListBlobs(useFlatBlobListing: true)) 
     { 
      var blob = item as CloudBlockBlob; 
      if (blob != null) 
      { 
       CloudBlockBlob sourceBlob = sourceContainer.GetBlockBlobReference(blob.Name); 
       CloudBlockBlob targetBlob = targetContainer.GetBlockBlobReference(blob.Name); 
       targetBlob.StartCopy(sourceBlob); 
      } 
     } 
    } 
} 
+0

それは完全に機能しました。どうもありがとう。 :) –

関連する問題