[英]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命令解决该问题,该命令将在复制命令完成后进行?
任何其他解决方案都将受到欢迎。 谢谢!
我建议您尝试接受CancellationToken的StartAsyncCopy()
重载。 使用该重载后,您应该能够通过调用该方法时使用的CancellationToken的CancellationTokenSource取消复制操作。
有关所有可用的重载,请参见CloudBlockBlob.StartCopyAsync方法 。 您还可以查看有关如何使用取消机制的CancellationTokenSource类 。
更新
如下面的注释中所述,如果操作已经开始,您还应该查看CloudBlob.AbortCopyAsync()
。
希望能帮助到你!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.