无法将“MessageBodyStream”类型的对象强制转换为“System.IO.MemoryStream”类型

时间:2011-05-14 11:24:59

标签: c# wcf

我从wcf服务器以流的形式返回一个内存流。 当我在客户端中检索它并将其转发回MemoryStream时,我收到此错误。

我不明白MessageBodyStream来自哪里,因为我从未使用它。有人可以告诉我这个问题的解决方案吗?

谢谢。

3 个答案:

答案 0 :(得分:7)

为什么不将它用作Stream而不是MemoryStream

您可能需要阅读this博文,其中特别提及您所看到的行为:

  

例如,如果你发送一个   MemoryStream,接收器会   收到它作为   System.ServiceModel.Dispatcher.StreamFormatter.MessageBodyStream   class(收到你发送的任何流   如此)。

http://christopherdeweese.com/blog2/post/streaming-in-wcf-knowing-is-half-the-battle

以下是有关该主题的一些MSDN信息:http://msdn.microsoft.com/en-us/library/ms733742.aspx

答案 1 :(得分:3)

This post建议,如果要将其作为MemoryStream访问,则需要先将此流读入MemoryStream。因为any stream you send is received as MessageBodyStream

答案 2 :(得分:2)

MessageBodyStreamMemoryStream是不相关的类型,您无法将其中一个转换为另一个类型。您应该可以将返回的对象用作Stream