如何使用WCF流式传输XElement / XDocument?

时间:2011-09-27 22:29:06

标签: c# .net wcf

我有以下方法签名。我无法改变它(即我不能改变返回类型)。

public Stream GetMusicInfo(string songId)
{
    XElement data = dao.GetMusicInfo(songId);

    // how do I stream the XElement?
}

如何使用WCF流式传输XElement / XDocument?

1 个答案:

答案 0 :(得分:5)

这很简单,如果你不介意实际上获取第一行中的所有数据:

public Stream GetMusicInfo(string songId)
{
    XElement data = dao.GetMusicInfo(songId);
    MemoryStream ms = new MemoryStream();
    data.Save(ms);
    ms.Position = 0;
    return ms;
}

换句话说,只需将其写入内存中,然后通过内存中的表示形式返回一个流。请注意Position = 0;调用,这是必要的,否则流将位于数据的 end

我希望希望 WCF会对流做正确的事。