你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
BlobRequestOptions.AbsorbConditionalErrorsOnRetry 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置一个值,该值指示是否应在请求的重试尝试中吸收条件故障。
public bool? AbsorbConditionalErrorsOnRetry { get; set; }
member this.AbsorbConditionalErrorsOnRetry : Nullable<bool> with get, set
Public Property AbsorbConditionalErrorsOnRetry As Nullable(Of Boolean)
属性值
示例
using (MemoryStream inputDataStream = new MemoryStream(inputData))
{
BlobRequestOptions conditionalErrorRequestOptions = new BlobRequestOptions() { AbsorbConditionalErrorsOnRetry = true };
CloudAppendBlob appendBlob = container.GetAppendBlobReference("appendBlob");
appendBlob.UploadFromStream(inputDataStream, accessCondition: null, options: conditionalErrorRequestOptions);
}
注解
此选项仅由 CloudAppendBlobUploadFrom* 方法、 AppendFrom* 方法和 BlobWriteStream 类中的 对象使用。 默认情况下,它设置为 false
。 将此选项设置为 true
仅针对单编写器方案。 在多编写器方案中将此选项设置为 true
可能会导致 Blob 数据损坏。
在追加 Blob 上调用“UploadFrom*”时,存储客户端将输入数据分解为多个数据块,并使用“追加块”操作上传每个数据块。 通常,“IfAppendPositionEqual”访问条件会添加到追加块操作,因此,如果其他某个进程在此数据流中间追加了数据,上传操作将失败。 但是,在非常特定的情况下,这可能会导致错误失败。 如果追加操作因超时而失败,则有可能该操作在服务上成功,但“成功”响应未将其返回到客户端。 在这种情况下,客户端将重试,然后出现“未满足追加位置”失败。
将此值设置为 true
会导致在重试时出现“未满足追加位置”失败时继续上传操作 - 考虑到上述可能性。 但是,这在多编写器方案中会失去保护 - 如果多个线程同时上传到 blob,并且此值设置为 true
,则某些数据可能会丢失,因为客户端认为数据已上传,而实际上数据是另一个进程的数据。