我计划通过WCF流传递MemoryStream,但它似乎不起作用,但当我稍微改变代码来传递FileStream时,它就起作用了。实际上,我的目的是传递大型业务对象集合(可序列化)。我正在使用basicHttpBinding。您的建议将不胜感激!
编辑:问题的症状是传入的流是空的。没有错误,也没有异常。
发布于 2011-09-22 10:22:38
你没有提供太多细节,然而,我几乎可以肯定我知道问题是什么,因为我已经看到这种情况发生了很多次。
如果您将某些内容写入MemoryStream
,以便将该内容作为WCF服务操作的结果返回,则需要在返回流之前手动将流重置到其开头。WCF将只从当前位置读取流,因此如果该位置尚未重置,则将返回一个空流。
这至少可以解释你所描述的问题。希望这能有所帮助。
下面是一些示例代码:
[OperationContract]
public Stream GetSomeData()
{
var stream = new MemoryStream();
using(var file = File.OpenRead("path"))
{
// write something to the stream:
file.CopyTo(stream);
// here, the MemoryStream is positioned at its end
}
// This is the crucial part:
stream.Position = 0L;
return stream;
}
https://stackoverflow.com/questions/7508502
复制相似问题