WCF服务可以返回Zip流吗?

时间:2013-01-17 10:55:16

标签: c# wcf dotnetzip

我必须在XML文件中存储一些非常大的字符串。现在我想使用GZipStream压缩字符串,然后在客户端解压缩它们。 WCF服务方法可以将zip流作为返回类型返回吗?

有我的服务方法:

public Stream ZipResponse()
{
    byte[] byteArray = null;
    GZipStream compressionStream = null;
    try
    {
        var var_details = "XML String Here";
        byteArray = Encoding.UTF8.GetBytes(var_details);
        MemoryStream stream = new MemoryStream(byteArray);
        compressionStream = new GZipStream(stream, CompressionMode.Compress, true);
    }
    catch (Exception e)
    { }
    return compressionStream;
}

现在,当我从客户端调用ZipResponse()方法时,它会抛出:
mscorlib.dll中发生未处理的“System.ServiceModel.CommunicationException”类型的异常附加信息:收到对XXX.XXX.XXX.XXX的HTTP响应时发生错误。这可能是由于服务端点绑定不使用HTTP协议。这也可能是由于服务器中止HTTP请求上下文(可能是由于服务关闭)。有关详细信息,请参阅服务器日志。

2 个答案:

答案 0 :(得分:2)

是的,WCF服务方法可以将Stream返回给客户端。 您应确保将传输模式设置为“流式传输”;除此之外,它应该是直截了当的。

您可以在此处获取更多信息:WCF Streaming Tutorial

答案 1 :(得分:1)

是的,看一下这篇关于7Zip(LZMA)WCF消息压缩的文章http://geekswithblogs.net/argot/archive/2009/10/27/wcf-message-compression---gzip-7zip.aspx