Поделиться через


IDataServiceStreamProvider.GetWriteStream Метод

Определение

Возвращает поток, используемый службой данных для записи двоичных данных для ресурса мультимедиа, полученных от клиента, принадлежащего указанной сущности.

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

Параметры

entity
Object

Сущность, которая является ссылкой на носитель со связанным ресурсом мультимедиа.

etag
String

Значение eTag, передаваемое службе данных в составе HTTP-запроса.

checkETagForEquality
Nullable<Boolean>

Значение типа Boolean, допускающее значение NULL, указывающее тип требуемой клиентом проверки параллелизма.

operationContext
DataServiceOperationContext

Экземпляр DataServiceOperationContext, используемый службой данных для обработки запроса.

Возвращаемое значение

Действительный Stream, который служба данных использует для записи содержимого двоичных данных, полученных от клиента.

Комментарии

Метод GetWriteStream вызывается средой выполнения службы данных при выполнении операции вставки или обновления ресурса мультимедиа, связанного с entity.

Метод GetWriteStream никогда не должен возвращать null значение.

Значение operationContext передается в качестве аргумента, так как реализатору этого метода интерфейса потребуется информация из заголовков HTTP-запроса для создания потока записи. При реализации этого метода следует по мере необходимости выполнять проверки параллелизма. Если в запрос был включен заголовок запроса If-Match или If-None-Match, etag параметр не будет иметь значение null. В этом случае метод должен выполнять соответствующую проверку параллелизма. Если проверка параллелизма пройдена успешно, то этот метод должен вернуть запрошенный поток. Если проверка параллелизма завершилась ошибкой, то необходимо вызвать метод DataServiceException с соответствующим кодом HTTP-ответа.

eTag — это значение заголовка If-Match или If-None-Match.

Поддерживаются следующие значения checkETagForEquality :

  • true — если eTag представляет заголовок If-Match.

  • false — если eTag представляет заголовок If-None-Match.

  • null — если в запросе нет заголовка If-Match или If-None-Match.

При реализации этого метода нельзя устанавливать заголовки HTTP-ответа Content-Type или eTag, так как они устанавливаются средой выполнения службы данных. Все остальные заголовки HTTP-ответа можно устанавливать через переданный operationContext.

При реализации этого метода следует задавать только те свойства operationContext, которые необходимы для успешного формирования ответа. Изменение других свойств operationContext может привести к повреждению ответа от службы данных.

Среда выполнения службы данных закрывает поток после того, как в него успешно записаны все данные. Если произошла ошибка во время записи в поток, то служба данных выдает клиенту ошибочный ответ.

При реализации метода GetWriteStream необходимо вызвать следующие исключения.

Тип исключения Условие
ArgumentNullException Если значение параметра entity или operationContext равно null.
ArgumentException Если entity не имеет двоичного свойства.
DataServiceException Если нельзя вернуть действительный поток.

Применяется к