2016-10-14 22 views
0

.net API startCopyを使用して、1つのストレージアカウントのページBLOBを別のストレージアカウントにコピーしようとしています。両方のストレージアカウントは標準タイプであり、BLOBはソースロケーションに存在します。例外の詳細については、「cannotverifysourcepath」エラーが表示されています。.Net API startCopyを使用して、1つのストレージアカウントから別のストレージアカウントにBLOBをコピーします。

私はstartcopy APIがアカウント間でコピーすることを望んでいました。誰でも問題の原因を突き止めるのを助けてくれますか?

Exception- Microsoft.WindowsAzure.Storage.StorageException: The remote server returned an error: (404) Not Found. ---> System.Net.WebException: The remote server returned an error: (404) Not Found. 
    at System.Net.HttpWebRequest.GetResponse() 
    at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext) 
    --- End of inner exception stack trace --- 
    at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext) 
    at Microsoft.WindowsAzure.Storage.Blob.CloudBlob.StartCopy(Uri source, AccessCondition sourceAccessCondition, AccessCondition destAccessCondition, BlobRequestOptions options, OperationContext operationContext) 
    at Microsoft.WindowsAzure.Storage.Blob.CloudPageBlob.StartCopy(CloudPageBlob source, AccessCondition sourceAccessCondition, AccessCondition destAccessCondition, BlobRequestOptions options, OperationContext operationContext) 
Request Information 
RequestID:1a82f5b6-0001-008f-7328-26bec1000000 
RequestDate:Fri, 14 Oct 2016 14:35:31 GMT 
StatusMessage:The specified resource does not exist. 
ErrorCode:CannotVerifyCopySource 
+0

あなたが実際に呼び出したものではなく、スタックトレースです。 'StartCopy()'の呼び出し方法を表示するように編集してください。 (明らかに実際のストレージアカウント名/キーをあいまいにする)。また、ソースパスがどのように有効であるかを明確にしてください。 –

答えて

0

data movement libraryを試すことができます。具体的に:

await TransferManager.CopyAsync(source, target, false); 

ブールパラメータは、これはサービス側の非同期コピーであるかどうかを指定します。そうであれば、コピーが完了する前にローカルタスクが完了することがあります。

sourcetargetが異なるアカウントにあり、両方のアクセスポリシーが「プライベート」である場合、これが機能することを確認しました。

1

blobをストレージアカウント間でコピーするには、ソースblobに一般にアクセス可能である必要があります。ソースBlobコンテナのACLを確認して、それがPrivateかどうか確認してください。

ソースブロブコンテナのACLがPrivateある場合は、2つの解決策があります。

  1. は少なくともRead権限を持つソースブロブと、少なくとも15日間の有効期限にShared Access Signature (SAS)を作成し、その使用SASコピー元のURL(blob URL + SASトークン)。
  2. 推奨されていますが、ソースのBlobコンテナのACLをBlobに変更することはできます。これにより、ソースブロブは一般にアクセス可能になります。あなたのコードはそのように動作するはずです。
関連する問題