首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何通过WCF流传输MemoryStream

如何通过WCF流传输MemoryStream
EN

Stack Overflow用户
提问于 2011-09-22 09:17:47
回答 1查看 14.8K关注 0票数 16

我计划通过WCF流传递MemoryStream,但它似乎不起作用,但当我稍微改变代码来传递FileStream时,它就起作用了。实际上,我的目的是传递大型业务对象集合(可序列化)。我正在使用basicHttpBinding。您的建议将不胜感激!

编辑:问题的症状是传入的流是空的。没有错误,也没有异常。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-22 10:22:38

你没有提供太多细节,然而,我几乎可以肯定我知道问题是什么,因为我已经看到这种情况发生了很多次。

如果您将某些内容写入MemoryStream,以便将该内容作为WCF服务操作的结果返回,则需要在返回流之前手动将流重置到其开头。WCF将只从当前位置读取流,因此如果该位置尚未重置,则将返回一个空流。

这至少可以解释你所描述的问题。希望这能有所帮助。

下面是一些示例代码:

代码语言:javascript
复制
    [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;
    }
票数 55
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7508502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档