【发布时间】:2013-01-17 10:55:15
【问题描述】:
我不得不在 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”类型的未处理异常附加信息:接收 HTTP 时发生错误回复 XXX.XXX.XXX.XXX。这可能是由于服务端点绑定未使用 HTTP 协议。这也可能是由于服务器中止了 HTTP 请求上下文(可能是由于服务关闭)。有关详细信息,请参阅服务器日志。
【问题讨论】:
-
你的问题真的很模糊。也许试着充实一下,展示你尝试过的东西以及你卡在哪里。您的问题的基本答案是肯定的。如果您需要更多细节,我们需要您在问题中提供更多细节。
-
对不起,我的问题。我在 WCF 服务中有 12MB 的 xml 字符串,我必须以 zip 流的形式返回到客户端?
-
您可以使用二进制流通过 WCF 发送任何内容
-
我的代码是:-public Stream ZipResponse() { byte[] byteArray = null;内存流流 = null;尝试 { var var_details = "XML 字符串"; byteArray = Encoding.UTF8.GetBytes(var_details);流 = 新的 MemoryStream(byteArray); } catch (Exception e) { } 返回流;我能够从服务返回流,但我必须返回 zipstream? ——
-
@Sam 你的代码有什么具体问题吗?还是您的问题只是“可以做到吗?”