Share via


你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

BlobRequestOptions.AbsorbConditionalErrorsOnRetry 属性

定义

获取或设置一个值,该值指示是否应在请求的重试尝试中吸收条件故障。

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,则某些数据可能会丢失,因为客户端认为数据已上传,而实际上数据是另一个进程的数据。

适用于