代码之家  ›  专栏  ›  技术社区  ›  Tri Q Tran

WCF-在流式处理终结点中,是否所有操作契约都需要流作为返回值或参数以使契约工作?

wcf
  •  0
  • Tri Q Tran  · 技术社区  · 14 年前

    我想知道,在同一个端点(已设置为流式传输模式)中,是否要求此服务中的所有操作契约都在参数中包含流,或者作为此服务工作的返回类型?

    简而言之:启用流的端点是否可以包含没有流作为参数或返回类型的操作协定?

    2 回复  |  直到 14 年前
        1
  •  2
  •   Mharlin    14 年前

    是的,即使使用流端点,也可以保持相同的契约,它是否包含流作为返回类型或参数并不重要。

    要使其工作,您需要将合同的某些成员更改为标题。

    [MessageContract]
    public class MyContract
    {
        [MessageHeader]
        public string FileName { get; set; }
    
        [MessageBodyMember]
        public Stream Content { get; set; }
    }
    
        2
  •  2
  •   marc_s Hady Salah    14 年前

    查看MSDN文档 Streaming Message Transfer :

    对流传输的限制

    使用流传输模式 使运行时强制 附加限制。

    发生在 流传输可以有一个合同 最多有一个输入或输出 参数。这个参数对应 整个信息的主体 必须是消息,派生类型为 流或IXMLSerializable 实施。 具有返回值 因为一个操作相当于 有输出参数的。

    因此,如果您有一个服务契约,它将在启用流的端点上公开, 全部的 对该合同的操作必须使用 Message Stream 作为他们唯一的参数。