繁体   English   中英

C#+ Azure存储Blob:StorageException:当前有一个挂起的复制操作

[英]C# + Azure Storage blobs: StorageException: There is currently a pending copy operation

我有服务器获取azure blob文件的URL(SAS只读)并将其复制到其他存储帐户中的另一个blob。 复制命令是异步命令( StartCopyAsync() )。

复制文件只是该服务器要做的一件事,它要做的更多。 如果另一个计算中的一个(或多个)失败,则抛出异常。

当发生异常时,我将进行回滚-这意味着删除在第一阶段中复制的文件。 我这样做是这样的:

await backupFile.DeleteIfExistsAsync();

问题

我收到此错误代码:

System.AggregateException: One or more errors occurred. (There is currently a pending copy operation.) 
---> Microsoft.WindowsAzure.Storage.StorageException: There is currently a pending copy operation.
 at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteAsyncInternal[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext, CancellationToken token) at Microsoft.WindowsAzure.Storage.Blob.CloudBlob.DeleteIfExistsAsync(DeleteSnapshotsOption deleteSnapshotsOption, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext, CancellationToken cancellationToken)

我猜是因为异步复制尚未完成...

是否可以使用异步Delete命令解决该问题,该命令将在复制命令完成后进行?

任何其他解决方案都将受到欢迎。 谢谢!

我建议您尝试接受CancellationTokenStartAsyncCopy()重载。 使用该重载后,您应该能够通过调用该方法时使用的CancellationTokenCancellationTokenSource取消复制操作。

有关所有可用的重载,请参见CloudBlockBlob.StartCopyAsync方法 您还可以查看有关如何使用取消机制的CancellationTokenSource类

更新

如下面的注释中所述,如果操作已经开始,您还应该查看CloudBlob.AbortCopyAsync()

希望能帮助到你!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM