chu*_*tch 5 .net c# azure azure-storage azure-storage-blobs
我有一种情况,我将大量blob从一个存储容器复制到另一个存储容器,并且一些blob已经复制,但是在我启动复制后的两天内,它们中的很多仍然未决.我基于以下事实做出这个决定:如果我尝试对目标blob做任何事情,我会得到以下错误:
Microsoft.WindowsAzure.StorageClient.StorageClientException:当前有一个挂起的复制操作.----> System.Net.WebException:远程服务器返回错误:(409)冲突.
我能做些什么吗?例如,我可以在事后中止副本吗?
这是我用来执行复制的复制代码.
try
{
destinationBlob.StartCopyFromBlob(
new Uri(sourceBlob.Uri.AbsoluteUri + signature));
System.Diagnostics.Trace.TraceInformation(
"Copying: {0}", destinationEndpoint.EndpointState.BlobName);
}
catch (Exception ex)
{
var we = ex.InnerException as WebException;
if (we != null && we.Status == WebExceptionStatus.ProtocolError)
{
System.Diagnostics.Trace.TraceError(
"conflict with blob copy for blob {0}", sourceBlob.Uri.AbsoluteUri);
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
您已经知道Copy Blob操作现在是异步的.因此,当您StartCopyFromBlob在Blob上调用操作时,Blob Storage Service会将复制操作放入队列中.由于它是异步操作,因此您不知道何时处理它.根据我的理解,最长时间为2周7天 即复制操作最多可能需要2周 7天 如果在2周内没有完成 7天,它将被服务取消.
现在回答你的问题:
我能做些什么吗?
我不这么认为.您无法更改队列优先级.
例如,我可以在事后中止副本吗?
是的你可以.当你调用时StartCopyFromBlob,你会得到一个标识复制操作的字符串(它叫做拷贝ID).您可以AbortCopy在该blob上使用此副本ID和调用操作.您也可以通过使用FetchAttributes方法获取blob属性来获取此副本ID .您想要检查的属性是CopyState.
| 归档时间: |
|
| 查看次数: |
2371 次 |
| 最近记录: |