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-запроса.
Значение типа 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 | Если нельзя вернуть действительный поток. |