IDataServiceStreamProvider.GetWriteStream Metodo

Definizione

Restituisce il flusso utilizzato dal servizio dati per scrivere i dati binari per la risorsa multimediale ricevuta dal client che appartiene all'entità specificata.

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

Parametri

entity
Object

Entità che è una voce di collegamento multimediale con una risorsa multimediale correlata.

etag
String

Valore eTag inviato come parte della richiesta HTTP inviata al servizio dati.

checkETagForEquality
Nullable<Boolean>

Valore Boolean nullable che indica il tipo di controllo della concorrenza richiesto dal client.

operationContext
DataServiceOperationContext

Istanza di DataServiceOperationContext utilizzata dal servizio dati per elaborare la richiesta.

Restituisce

Valore Stream valido utilizzato dal servizio dati per scrivere il contenuto di dati binari ricevuti dal client.

Commenti

Il metodo GetWriteStream viene chiamato dal runtime del servizio dati quando viene elaborata un'operazione di inserimento o aggiornamento per la risorsa multimediale associata all'elemento entity.

Il GetWriteStream metodo non deve mai restituire un null valore.

operationContext viene fornito come argomento perché un responsabile dell'implementazione di questo metodo di interfaccia avrà bisogno di informazioni dalle intestazioni della richiesta HTTP per creare un flusso di scrittura. Quando si implementa questo metodo, è necessario eseguire controlli della concorrenza secondo le esigenze. Se un'intestazione di richiesta If-Match o If-None-Match è stata inclusa nella richiesta, l'oggetto etag non sarà null. In questo caso, il metodo deve eseguire il controllo della concorrenza appropriato. Se il controllo della concorrenza viene superato, il metodo restituisce il flusso richiesto. Se i controlli della concorrenza hanno esito negativo, il metodo genera un oggetto DataServiceException con il codice della risposta HTTP appropriato.

eTag è il valore di un'intestazione If-Match o If-None-Match.

Sono supportati i valori checkETagForEquality seguenti:

  • true - quando l'eTag rappresenta un'intestazione di If-Match.

  • false - quando l'eTag rappresenta un'intestazione If-None-Match.

  • null - quando un'intestazione If-Match o If-None-Match non è presente nella richiesta.

Quando si implementa questo metodo, le intestazioni di risposta HTTP Content-Type o eTag non devono essere impostate perché vengono impostate dal runtime del servizio dati. È possibile impostare le intestazioni di risposta HTTP restanti tramite l'elemento operationContext fornito.

Quando si implementa questo metodo, è necessario impostare solo le proprietà in operationContext richieste per una risposta riuscita. La modifica di altre proprietà in operationContext può provocare danni alla risposta dal servizio dati.

Il runtime del servizio dati chiude il flusso quando tutti i byte sono stati scritti correttamente nel flusso. Se si verifica un errore durante la scrittura nel flusso, il servizio dati genera una risposta di errore al client.

Quando si implementa il metodo GetWriteStream, è necessario generare le eccezioni seguenti come indicato:

Tipo di eccezione Condizione
ArgumentNullException Quando entity o operationContext è null.
ArgumentException Quando entity non dispone di una proprietà binaria.
DataServiceException Quando non è possibile restituire un flusso valido.

Si applica a