Compartilhar via


IDataServiceStreamProvider.GetWriteStream Método

Definição

Retorna o fluxo que o serviço de dados usa para gravar os dados binários para o recurso de mídia recebido do cliente que pertence à entidade especificada.

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

Parâmetros

entity
Object

A entidade que é uma entrada de link de mídia com um recurso de mídia relacionada.

etag
String

O valor de eTag enviado como parte da solicitação HTTP enviada para o serviço de dados.

checkETagForEquality
Nullable<Boolean>

Um Boolean que permite valor nulo que indica o tipo de verificação de simultaneidade solicitado pelo cliente.

operationContext
DataServiceOperationContext

A instância de DataServiceOperationContext que é usada pelo serviço de dados para processar a solicitação.

Retornos

Um Stream válido que o serviço de dados usa para gravar o conteúdo de dados binários recebidos do cliente.

Comentários

O GetWriteStream método é chamado pelo runtime do serviço de dados quando uma operação de inserção ou atualização está sendo processada para o recurso de mídia associado ao entity.

O GetWriteStream método nunca deve retornar um null valor.

O operationContext é fornecido como um argumento porque um implementador desse método de interface precisará de informações dos cabeçalhos de solicitação HTTP para criar um fluxo de gravação. Ao implementar esse método, você deve executar verificações de simultaneidade conforme necessário. Se um cabeçalho de solicitação If-Match ou If-None-Match foi incluído na solicitação, o etag não será null. Nesse caso, esse método deve executar a marcar de simultaneidade apropriada. Se a simultaneidade marcar for aprovada, esse método deverá retornar o fluxo solicitado. Se as verificações de simultaneidade falharem, o método deverá gerar um DataServiceException com o código de resposta HTTP apropriado.

eTag é o valor de um cabeçalho If-Match ou If-None-Match.

Há suporte para os seguintes valores de checkETagForEquality :

  • true – quando a eTag representa um cabeçalho If-Match.

  • false – quando a eTag representa um cabeçalho If-None-Match.

  • null - quando um cabeçalho If-Match ou If-None-Match não está presente na solicitação.

Ao implementar esse método, você não deve definir os cabeçalhos de resposta HTTP Content-Type ou eTag porque eles são definidos pelo runtime do serviço de dados. Você pode definir os cabeçalhos de resposta HTTP restantes usando o fornecido operationContext.

Ao implementar esse método, você só deve definir as propriedades em operationContext que são necessárias para uma resposta bem-sucedida. Alterar outras propriedades em operationContext pode corromper a resposta do serviço de dados.

O runtime do serviço de dados fecha o fluxo quando todos os bytes foram gravados com êxito no fluxo. Se ocorrer um erro durante a gravação no fluxo, o serviço de dados gerará uma resposta de erro ao cliente.

Ao implementar o GetWriteStream método , você deve gerar as seguintes exceções, conforme indicado:

Tipo de exceção Condição
ArgumentNullException Quando entity ou operationContext são null.
ArgumentException Quando entity não tem uma propriedade binária.
DataServiceException Quando um fluxo válido não pode ser retornado.

Aplica-se a