Вы не предоставляете много подробностей, однако, я почти уверен, что знаю, в чем проблема, поскольку я часто видел, что это происходит.
Если вы что-то напишите в 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;
}