IDataServiceStreamProvider.GetWriteStream 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
返回流,该流由数据服务用于写入从客户端接收的属于指定实体的媒体资源的二进制数据。
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
作为发送到数据服务的 HTTP 请求的一部分发送的 eTag 值。
- 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 标头时。
当您实现此方法时,您不得设置 Content-Type 或 eTag HTTP 响应标头,因为它们由数据服务运行时设置。 您可以通过使用所提供的 operationContext
设置剩余 HTTP 响应标头。
当实现此方法时,您应该只设置成功响应所需的 operationContext
属性。 更改其他 operationContext
属性可能会损坏来自数据服务的响应。
当所有字节都成功都写入流时,数据服务运行时将关闭流。 如果在写入到流时出现错误,数据服务将对客户端生成错误响应。
当您实现 GetWriteStream 方法时,您应引发以下例外,如下所示:
例外类型 | 条件 |
---|---|
ArgumentNullException | 当 entity 或 operationContext 为 null 时。 |
ArgumentException | 当 entity 不含二进制属性时。 |
DataServiceException | 当不能返回有效的流时。 |