2016-10-14 1 views
0

Ich versuche, ein Seitenblob in einem Speicherkonto zu einem anderen Speicherkonto mit .net API startCopy zu kopieren. Beide Speicherkonten sind Standardtypen, und Blob existiert am Quellspeicherort. Ich erhalte den Fehler "cannotverifysourcepath" unter den Details zur Ausnahme.Kopiere Seitenblob von einem Speicherkonto zu einem anderen Speicherkonto mit. NET-API startCopy

Ich hatte gehofft, dass startcopy API funktioniert, um von einem Konto zu einem anderen zu kopieren. Kann mir bitte jemand helfen, herauszufinden, worum es hier geht?

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

Sie enthalten nur Ihre Stack-Trace, nicht den tatsächlichen Anruf, den Sie gemacht haben. Bitte bearbeiten Sie, um zu zeigen, wie Sie 'StartCopy()' aufrufen. (offensichtlich den Namen/Schlüssel des echten Speicherkontos verdecken). Bitte erläutern Sie auch, wie Sie bestätigt haben, dass der Quellpfad gültig ist. –

Antwort

0

Sie können versuchen, die data movement library verwenden. Konkret:

Der boolesche Parameter gibt an, ob es sich um eine asynchrone serverseitige Kopie handelt. Wenn dies der Fall ist, kann die lokale Aufgabe abgeschlossen sein, bevor die Kopie abgeschlossen ist.

Ich habe überprüft, dass dies funktioniert, wenn source und target in verschiedenen Konten sind und beide Zugriffsrichtlinien 'privat' sind.

1

Zum Kopieren von Blob über Speicherkonten muss das Quell-Blob öffentlich zugänglich sein. Überprüfen Sie die ACL des Quell-Blobcontainers und prüfen Sie, ob es sich um Private handelt.

Wenn die Quelle blob Containers ACL Private ist, gibt es zwei mögliche Lösungen:

  1. erstellen Shared Access Signature (SAS) auf dem Quell Blob mit mindestens Read Erlaubnis und ein Verfallsdatum von mindestens 15 Tagen und verwenden, die SAS URL (Blob-URL + SAS-Token) als Kopierquelle.
  2. Nicht empfohlen, aber Sie können die ACL des Quell-Blobcontainers in Blob ändern. Dadurch wird das Quell-Blob öffentlich zugänglich gemacht. Ihr Code sollte so funktionieren wie in diesem Fall.
Verwandte Themen