当Transfermode = Stream时,将文件名和长度参数添加到WCF流

时间:2011-02-03 19:20:39

标签: .net wcf streaming filestream wcf-client

与讨论此主题的所有SO帖子相比,我对在[MessageContract]中包装流对象不感兴趣,因为在streaming模式下(afaik)不允许这样做

当我处于流模式时,如何向客户端返回一些元数据,例如长度和文件名?我可以添加WCF / SOAP标头吗?我该怎么做?

我正在研究扩展文件流类并添加[MessageHeader]属性,但我无法让它工作。

1 个答案:

答案 0 :(得分:5)

这是我们如何做到的

     [MessageContract]
    public class StreamMessage
    {
        [MessageHeader(MustUnderstand = true)]
        public long Length { get; set; }
        [MessageHeader(MustUnderstand = true)]
        public int ServerVersion { get; set; }
        [MessageHeader(MustUnderstand = true)]
        public byte[] Cerificate { get; set; }
        [MessageBodyMember(Order = 1)]
        public Stream Stream;
    }