2

我不得不在 XML 文件中存储一些非常大的字符串。现在我想使用 a 压缩字符串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 请求上下文(可能是由于服务关闭)。有关更多详细信息,请参阅服务器日志。

4

2 回答 2

2

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

您可以在此处获得更多信息:WCF 流式处理教程

于 2013-01-17T11:01:04.943 回答
1

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

于 2013-01-17T11:05:47.200 回答