Freigeben über


IDataServiceStreamProvider.GetWriteStream Methode

Definition

Gibt den Datenstrom zurück, mit dem der Datendienst die Binärdaten für die Medienressource schreibt, die von dem zur angegebenen Entität gehörenden Client empfangen wurden.

public:
 System::IO::Stream ^ GetWriteStream(System::Object ^ entity, System::String ^ etag, Nullable<bool> checkETagForEquality, System::Data::Services::DataServiceOperationContext ^ operationContext);
public System.IO.Stream GetWriteStream (object entity, string etag, bool? checkETagForEquality, System.Data.Services.DataServiceOperationContext operationContext);
abstract member GetWriteStream : obj * string * Nullable<bool> * System.Data.Services.DataServiceOperationContext -> System.IO.Stream
Public Function GetWriteStream (entity As Object, etag As String, checkETagForEquality As Nullable(Of Boolean), operationContext As DataServiceOperationContext) As Stream

Parameter

entity
Object

Die Entität, die ein Medienlinkeintrag mit einer zugehörigen Medienressource ist.

etag
String

Der als Teil der HTTP-Anforderung an den Datendienst gesendete eTag-Wert.

checkETagForEquality
Nullable<Boolean>

Ein Boolean-Wert, der NULL-Werte zulässt und den Typ der Parallelitätsprüfung angibt, der vom Client angefordert wurde.

operationContext
DataServiceOperationContext

Die vom Datendienst verwendete DataServiceOperationContext-Instanz zur Verarbeitung der Anforderung.

Gibt zurück

Ein gültiger Stream, mit dem der Datendienst den Inhalt vom Client empfangener Binärdaten schreibt.

Hinweise

Die GetWriteStream-Methode wird von der Datendienstlaufzeit aufgerufen, wenn ein Einfüge- oder Updatevorgang für die Medienressource verarbeitet wird, die der entity zugeordnet ist.

Die GetWriteStream -Methode sollte niemals einen null Wert zurückgeben.

Der operationContext wird als Argument angegeben, da eine Implementierung dieser Schnittstellenmethode Informationen von den HTTP-Anforderungsheadern benötigt, um einen Schreibdatenstrom zu erstellen. Wenn Sie diese Methode implementieren, müssen Sie ggf. Parallelitätsüberprüfungen ausführen. Wenn ein If-Match- oder If-None-Match-Anforderungsheader in der Anforderung enthalten war, ist der etag nicht null. In diesem Fall muss diese Methode die entsprechende Parallelitätsüberprüfung ausführen. Wenn die Parallelitätsüberprüfung bestanden wird, gibt diese Methode den angeforderten Datenstrom zurück. Wenn die Parallelitätsüberprüfungen fehlschlagen, löst die Methode eine DataServiceException mit dem entsprechenden HTTP-Antwortcode aus.

eTag ist der Wert eines If-Match- oder If-None-Match-Headers.

Die folgenden Werte von checkETagForEquality werden unterstützt:

  • true – wenn das eTag einen If-Match-Header darstellt.

  • false – wenn das eTag einen If-None-Match-Header darstellt.

  • null – wenn in der Anforderung kein If-Match- oder If-None-Match-Header vorhanden ist.

Wenn Sie diese Methode implementieren, dürfen Sie nicht den Content-Type- oder eTag-HTTP-Antwortheader festlegen, da diese Header von der Datendienstlaufzeit festgelegt werden. Sie können die restlichen HTTP-Antwortheader mit dem bereitgestellten operationContext festlegen.

Wenn Sie diese Methode implementieren, sollten Sie nur die Eigenschaften für den operationContext festlegen, die für eine erfolgreiche Antwort erforderlich sind. Durch das Ändern anderer Eigenschaften von operationContext kann die Antwort des Datendiensts beschädigt werden.

Die Datendienstlaufzeit schließt den Datenstrom, wenn alle Bytes erfolgreich in den Datenstrom geschrieben wurden. Wenn beim Schreiben in den Datenstrom ein Fehler auftritt, generiert der Datendienst eine Fehlerantwort an den Client.

Wenn Sie die GetWriteStream-Methode implementieren, sollten die folgenden Ausnahmen entsprechend den angegebenen Bedingungen ausgelöst werden:

Ausnahmetyp Bedingung
ArgumentNullException Wenn entity oder operationContextnull ist.
ArgumentException Wenn entity über keine binäre Eigenschaft verfügt.
DataServiceException Wenn kein gültiger Datenstrom zurückgegeben werden kann.

Gilt für: