C# GZIP输出流

C# GZIP输出流,c#,.net,xml,gzipstream,C#,.net,Xml,Gzipstream,我正在尝试GZIP一些通过HTTP(不是web服务)传输的XML ZipOutput为true,但响应似乎没有压缩。有什么建议和替代技术吗 我知道我可以使用SharpZipLib,但我想在框架中使用GZipStream类。在我看来,您的代码应该可以工作-也许可以使用调试器来检查代码是否真的按照您认为的方式被调用 在-上有一篇关于这方面的好文章(包括一种替代技术),我想我已经解决了这个问题-结果是office防火墙在出站请求上剥离了Accept Encoding标头。谢谢,我会查看并发回。我想我的

我正在尝试GZIP一些通过HTTP(不是web服务)传输的XML

ZipOutput
true
,但响应似乎没有压缩。有什么建议和替代技术吗


我知道我可以使用
SharpZipLib
,但我想在框架中使用
GZipStream
类。

在我看来,您的代码应该可以工作-也许可以使用调试器来检查代码是否真的按照您认为的方式被调用


在-

上有一篇关于这方面的好文章(包括一种替代技术),我想我已经解决了这个问题-结果是office防火墙在出站请求上剥离了Accept Encoding标头。

谢谢,我会查看并发回。我想我的原始代码来自Rick的文章。我已经在本地遍历了代码,它按预期运行,但是没有压缩。请参阅我上面的评论,其中建议在IIS 7上启用Gzip压缩需要一些附加配置。这与IIS无关-您正在实现自己的压缩,而不是在这里使用IIS模块/处理程序。使用fiddler查看浏览器在http级别接收到的内容可能是值得的。我真的认为这应该奏效(所以我和你一样沮丧!)。有没有一个公开的URL,任何人都可以查看这个?fiddler会给我比Firebug更多的信息吗?我在Firebug中尝试过,但没有看到内容编码头,报告的文件大小“有”或“没有”压缩都是相同的。在回答您关于公共URL的问题时,有一个,但不幸的是,我不能透露,因为提要数据是敏感的。猜测:也许浏览器“有帮助地”解压了响应?尝试真正看到响应。我不这么认为,我正在使用firebug检查响应,无论我是否通过zip开关,响应大小都是相同的。奇怪的是,它在本地工作。IIS中已启用静态和动态内容的压缩。看起来可能有一些额外的手动配置来启用压缩。。我还没有对我的本地IIS安装进行任何更改,因此不确定它为什么会在本地运行并且不可用。我不太明白这是如何解决您的问题的-我想您肯定
如果(ZipOutput)
的计算结果为真?@Stuart-抱歉-代码示例没有说明这一点,但是ZipOutput不是检测Accept编码头的标志,而是可选querystring参数(&zip=1)的包装器。现在回想起来,它也需要检查标题。啊-我明白了-所以你问题中说“ZipOutput是真的”的部分是错误的。谢谢
if (ZipOutput)
{
    output = new GZipStream(Context.Response.OutputStream, CompressionMode.Compress);
    Context.Response.AppendHeader("Content-Encoding", "gzip");
}
else
{
    output = Context.Response.OutputStream;
}

EscapeXMLTextWriter xmlWriter = new EscapeXMLTextWriter(output, new UTF8Encoding())
{
    Formatting = Formatting.Indented
};