IDataServiceStreamProvider.GetWriteStream Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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.
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. |