次の方法で共有


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);
}

注釈

このオプションは、UploadFrom* メソッド、AppendFrom* メソッド、BlobWriteStream クラスのオブジェクトでのみCloudAppendBlob使用されます。 既定では、 に設定 falseされています。 このオプションは、シングルライター シナリオの場合にのみ に true 設定します。 マルチライター シナリオでこのオプションを に true 設定すると、BLOB データが破損する可能性があります。

追加 BLOB で "UploadFrom*" を呼び出すと、ストレージ クライアントは入力データを複数のデータ ブロックに分割し、各データ ブロックを "追加ブロック" 操作でアップロードします。 通常、"IfAppendPositionEqual" アクセス条件が追加ブロック操作に追加されるため、他のプロセスがこのデータ ストリームの途中でデータを追加した場合、アップロード操作は失敗します。 ただし、これにより、非常に具体的なケースで誤ったエラーが発生する可能性があります。 追加操作がタイムアウトで失敗した場合、サービスで操作が成功した可能性がありますが、"成功" 応答によってクライアントに戻されませんでした。 この場合、クライアントは再試行し、"追加位置が満たされていません" というエラーが発生します。

この値を に true 設定すると、再試行時に "追加位置が満たされていません" というエラーが発生したときに、アップロード操作が続行されます。上記の可能性を示します。 ただし、マルチライター シナリオでは保護が失われます。複数のスレッドが一度に BLOB にアップロードされ、この値が に true設定されている場合は、クライアントがデータがアップロードされたと見なされるため、一部のデータが失われる可能性があります(実際にはもう一方のプロセスのデータだった場合)。

適用対象