Partager via


IDataServiceStreamProvider.GetWriteStream Méthode

Définition

Retourne le flux que le service de données utilise pour écrire les données binaires pour la ressource multimédia reçue du client qui appartient à l'entité spécifiée.

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

Paramètres

entity
Object

Entité qui est une entrée de lien multimédia avec une ressource multimédia associée.

etag
String

Valeur de l'eTag envoyée dans le cadre de la requête HTTP envoyée au service de données.

checkETagForEquality
Nullable<Boolean>

Valeur Boolean nullable qui indique le type de contrôle d'accès concurrentiel demandé par le client.

operationContext
DataServiceOperationContext

Instance DataServiceOperationContext qui est utilisée par le service de données pour traiter la demande.

Retours

Stream valide que le service de données utilise pour écrire le contenu des données binaires reçues du client.

Remarques

La méthode GetWriteStream est appelée par le runtime du service de données lorsqu'une opération d'insertion ou de mise à jour est traitée pour la ressource multimédia associée à l'entity.

La GetWriteStream méthode ne doit jamais retourner une null valeur.

Le operationContext est fourni comme argument car un implémenteur de cette méthode d’interface a besoin des informations des en-têtes de demande HTTP pour créer un flux d’écriture. Lorsque vous implémentez cette méthode, vous devez exécuter des contrôles d'accès concurrentiels selon les besoins. Si un en-tête de requête If-Match ou If-None-Match a été inclus dans la demande, le etag ne sera nullpas . Dans ce cas, cette méthode doit exécuter le contrôle d'accès concurrentiel approprié. Si le contrôle d'accès concurrentiel réussit, cette méthode doit retourner le flux de données demandé. Si les contrôles d'accès concurrentiel échouent, la méthode doit déclencher une exception DataServiceException avec le code de réponse HTTP approprié.

eTag est la valeur d'un en-tête If-Match ou If-None-Match.

Les valeurs suivantes de checkETagForEquality sont prises en charge :

  • true - lorsque l’eTag représente un en-tête If-Match.

  • false - lorsque l’eTag représente un en-tête If-None-Match.

  • null - lorsqu’un en-tête If-Match ou If-None-Match n’est pas présent dans la demande.

Lorsque vous implémentez cette méthode, vous ne devez pas définir les en-têtes de réponse HTTP Content-Type ou eTag car ils sont définis par l'exécution du service de données. Vous pouvez définir des en-têtes de réponse HTTP restants à l'aide du operationContext fourni.

Lorsque vous implémentez cette méthode, vous devez définir uniquement les propriétés sur operationContext requises pour que la réponse soit correcte. Modifier d'autres propriétés sur operationContext peut corrompre la réponse du service de données.

Le runtime du service de données ferme le flux lorsque tous les octets ont été correctement écrits dans le flux. Si une erreur se produit lors de l'écriture dans le flux, le service de données génère une réponse d'erreur pour le client.

Lorsque vous implémentez la méthode GetWriteStream, vous devez lever les exceptions suivantes comme indiqué :

Type d'exception Condition
ArgumentNullException Lorsque entity ou operationContext est null.
ArgumentException Lorsque entity n'a pas de propriété binaire.
DataServiceException Lorsqu'un flux de données valide ne peut pas être retourné.

S’applique à