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-MatchNone-Match или If-None-Match.

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

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

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

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

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

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