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-MatchNone-Match или If-None-Match.
При реализации этого метода не следует задавать заголовки ответа Content-Type или eTag HTTP, так как они задаются средой выполнения службы данных. Можно задать оставшиеся заголовки HTTP-ответа с помощью предоставленного.operationContext
При реализации этого метода следует задать только свойства operationContext , необходимые для успешного ответа. Изменение других свойств operationContext может привести к повреждению ответа из службы данных.
Среда выполнения службы данных закрывает поток, когда все байты успешно записаны в поток. Если при записи в поток возникает ошибка, служба данных создает ответ на ошибку клиента.
При реализации GetWriteStream метода необходимо вызвать следующие исключения, как указано ниже.
| Тип исключения | Condition |
|---|---|
| ArgumentNullException | Когда entity или operationContext есть null. |
| ArgumentException | Если entity двоичное свойство не имеется. |
| DataServiceException | Если допустимый поток не может быть возвращен. |