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

goo*_*ate 2 .net streaming wcf filestream wcf-client

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

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

我正在寻找扩展文件流类并添加一个[MessageHeader]属性,但我无法让它工作.

Ser*_*oda 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;
    }
Run Code Online (Sandbox Code Playgroud)