【发布时间】:2012-03-31 20:34:04
【问题描述】:
我有一个 Web 服务以字符串格式返回 XML 值。
通过 IE9,我可以看到某些 Web 服务调用的大小高达 1MB。
我通过编辑 Metabase.xml 文件在 IIS 6 中启用了压缩,设置如下:
HcScriptFileExtensions = "asmx"
下
IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/gzip"
我还在 IIS 管理器中的网站属性的服务选项卡上启用了 HTTP 压缩。
我还在 Web 服务扩展中添加了 HttCompression,映射到 Windows\System32\inetsrv\ 文件夹中的 gzip dll。
当我调用 Web 服务时,返回的值没有被压缩(与之前的服务调用大小相同)。
有什么技巧可以确保 IIS 压缩 IIS 返回的字符串数据值?
更新: 我还按照这些链接上的说明进行操作:
http://rextang.net/blogs/work/archive/2007/09/12/5654.aspx http://blogs.msdn.com/b/rextang/archive/2007/09/13/4880187.aspx
使用IE9,我从开发者工具,查看Web服务调用的详细视图,可以看到Accept-Encoding键的值为gzip/deflate。
Web 服务 SOAP XML(以字符串形式)值仍未被压缩。我应该进一步研究哪些领域?
顺便说一下,我使用的是 IIS6。
更新: 我检查了这个网站: http://blogs.iis.net/webtopics/archive/2009/02/24/troubleshooting-http-compression-in-iis-6-0.aspx
我正确地拿到了项目 1,2,3。
对于第 4 项,我什至尝试只将 asmx 设置为扩展名,但无济于事。
对于第 5 项,我在子级没有任何压缩设置。
对于第 6 项,防病毒软件不会对目录进行扫描以进行压缩。
对于第 7 项,我没有将斜杠作为参数传递给正在执行的 DLL。
对于第 8 项,我不确定在哪里/如何检查。
对于第 9 项,我已经与 fiddler 进行了核对,并且将正确的标头放置在请求标头上。
对于第 10 项,我在我的应用程序中看不到任何需要触摸它的设置。
对于第 11 项,我收到的状态代码是 200。
对于第 12 项,访问应用时未指定代理。
对于第 13 项,请求是 Web 服务。
【问题讨论】:
-
虽然有切线关系,但看看How to enable IIS compression for WCF services。
-
另一种可能的解决方案asp.net and wcf compression via iis
-
这些都是了解更多关于一般主题的好建议。也就是说,Angelo 必须注意 IIS5、IIS6 和 IIS7 压缩在每个版本之间发生了巨大变化。 IIS5 很糟糕,IIS6 很难配置,而 IIS7 终于开始成为“交钥匙”。因此,阅读非特定版本的文章意味着他应该对他所学的内容持保留态度。
标签: web-services iis asmx gzip