Freigeben über


BlobRequestOptions.AbsorbConditionalErrorsOnRetry Eigenschaft

Definition

Ruft einen Wert ab, der angibt, ob ein bedingter Fehler bei einem Wiederholungsversuch für die Anforderung abgefangen werden soll, oder legt diesen fest.

public bool? AbsorbConditionalErrorsOnRetry { get; set; }
member this.AbsorbConditionalErrorsOnRetry : Nullable<bool> with get, set
Public Property AbsorbConditionalErrorsOnRetry As Nullable(Of Boolean)

Eigenschaftswert

Beispiele

using (MemoryStream inputDataStream = new MemoryStream(inputData))
{
    BlobRequestOptions conditionalErrorRequestOptions = new BlobRequestOptions() { AbsorbConditionalErrorsOnRetry = true };

    CloudAppendBlob appendBlob = container.GetAppendBlobReference("appendBlob");
    appendBlob.UploadFromStream(inputDataStream, accessCondition: null, options: conditionalErrorRequestOptions);
}

Hinweise

Diese Option wird nur vom CloudAppendBlob -Objekt in den UploadFrom* -Methoden, den AppendFrom*- Methoden und der BlobWriteStream-Klasse verwendet. Standardmäßig ist er auf falsefestgelegt. Legen Sie diese Option für Szenarien mit einem einzelnen Writer auf true fest. Das Festlegen dieser Option auf true in einem Multi-Writer-Szenario kann zu beschädigten Blobdaten führen.

Beim Aufrufen von "UploadFrom*" für ein Anfügeblob unterbricht der Speicherclient die Eingabedaten in eine Reihe von Datenblöcken und lädt jeden Datenblock mit einem "Anfügeblock"-Vorgang hoch. Normalerweise wird dem Anfügeblockvorgang eine Zugriffsbedingung "IfAppendPositionEqual" hinzugefügt, sodass der Uploadvorgang fehlschlägt, wenn ein anderer Prozess in der Mitte dieses Datenstroms Daten angefügt hat. Dies kann jedoch in einem sehr speziellen Fall zu einem falschen Fehler führen. Wenn ein Anfügevorgang mit einem Timeout fehlschlägt, besteht die Möglichkeit, dass der Vorgang für den Dienst erfolgreich war, aber die Antwort "success" hat ihn nicht an den Client zurückgebracht. In diesem Fall wird der Client den Vorgang wiederholen und dann den Fehler "Anfügeposition nicht erfüllt" erhalten.

Das Festlegen dieses Werts auf führt dazu true , dass der Uploadvorgang fortgesetzt wird, wenn bei einem Wiederholungsversuch ein Fehler "Anfügeposition nicht erfüllt" auftritt, wobei die oben genannte Möglichkeit berücksichtigt wird. Dies verliert jedoch den Schutz im Multi-Writer-Szenario: Wenn mehrere Threads gleichzeitig in das Blob hochgeladen werden und dieser Wert auf truefestgelegt ist, gehen möglicherweise einige Daten verloren, da der Client denkt, dass die Daten hochgeladen wurden, obwohl es sich tatsächlich um die Daten des anderen Prozesses handelte.

Gilt für: