我想知道在同一端点(已设置为流传输模式)是否需要让此服务中的所有操作契约在参数中有一个流,或者作为此服务的返回类型?< / p>
简而言之:流式启用端点是否包含没有流作为参数或返回类型的操作合同?
答案 0 :(得分:2)
是的,即使您使用流端点,也可以保持相同的合同,如果它包含流作为返回类型或参数,则无关紧要。
要使其工作,您需要将合同的某些成员更改为标题。
[MessageContract]
public class MyContract
{
[MessageHeader]
public string FileName { get; set; }
[MessageBodyMember]
public Stream Content { get; set; }
}
答案 1 :(得分:2)
检查Streaming Message Transfer上的MSDN文档:
对流转移的限制
使用流式传输模式 导致运行时间强制执行 其他限制。
跨越的操作 流式运输可以签订合同 最多只有一个输入或输出 参数。该参数对应 对整个信息和 必须是Message,派生类型 流,或IXmlSerializable 实施。有一个返回值 对于一个操作相当于 有一个输出参数。
因此,如果您的服务合同将通过启用了流媒体的端点公开,则该合约上的所有操作必须使用Message
或Stream
作为他们的单个参数。