可以使用WCF流传输文件吗?使用包含另一个MessageContract的MessageContract,并将Stream放在其中是否可行?我认为答案是否定的,但我更喜欢将文件打包到“根”消息中。换句话说,我的设置如下:
请求已成功发送和接收到服务,但是似乎流没有被正确地反序列化并返回为空引用。我知道在带有流的MessageContract上阅读过一条规则,即流必须是MessageContract的正文,并且我认为这是当前违反的规则。我希望FileTransferMessage作为正文,然后流作为其正文是可以接受的。您有什么建议吗?我希望不要将流/文件名/文件长度添加到我的传输对象中。
[MessageContract]
public class Transport
{
[MessageHeader]
private readonly Guid fId;
[MessageHeader]
private readonly DateTime fTimestamp;
[MessageBodyMember(Order = 1)]
public FileTransferMessage FileTransferMessage { get; set; }
}
[MessageContract]
public class FileTransferMessage : IDisposable
{
[MessageBodyMember(Order = 1)]
public Stream FileByteStream;
[MessageHeader(MustUnderstand = true)]
public long FileLength;
[MessageHeader(MustUnderstand = true)]
public string FileName;
}
请求已成功发送和接收到服务,但是似乎流没有被正确地反序列化并返回为空引用。我知道在带有流的MessageContract上阅读过一条规则,即流必须是MessageContract的正文,并且我认为这是当前违反的规则。我希望FileTransferMessage作为正文,然后流作为其正文是可以接受的。您有什么建议吗?我希望不要将流/文件名/文件长度添加到我的传输对象中。