IDataServiceStreamProvider.GetWriteStream Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.
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. |