我有一个Web服务以String格式返回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,我在Developer Tools中查看了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服务。
答案 0 :(得分:2)
安吉洛,
IIS6上的设置组合非常敏感且无法容忍。例如,各种可配置文件扩展名必须从新行开始 - 不以空格分隔。 IIS6压缩的敏感性是尤其 true,其中涉及动态生成的内容(如来自webservices的返回)。
尝试以下设置,执行IIS重置以重新加载这些元数据库更改,并交叉手指!
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/deflate"
HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
HcCreateFlags="0"
HcDoDynamicCompression="TRUE"
HcDoOnDemandCompression="TRUE"
HcDoStaticCompression="TRUE"
HcDynamicCompressionLevel="10"
HcFileExtensions="htm
html
xml
css
txt
rdf
js"
HcOnDemandCompLevel="10"
HcPriority="1"
HcScriptFileExtensions="asp
cgi
exe
dll
aspx
asmx"
>
</IIsCompressionScheme>
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/gzip"
HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
HcCreateFlags="1"
HcDoDynamicCompression="TRUE"
HcDoOnDemandCompression="TRUE"
HcDoStaticCompression="TRUE"
HcDynamicCompressionLevel="10"
HcFileExtensions="htm
html
xml
css
txt
rdf
js"
HcOnDemandCompLevel="10"
HcPriority="1"
HcScriptFileExtensions="asp
cgi
exe
dll
aspx
asmx"
>
</IIsCompressionScheme>
<IIsCompressionSchemes Location ="/LM/W3SVC/Filters/Compression/Parameters"
HcCacheControlHeader="max-age=86400"
HcCompressionBufferSize="8192"
HcCompressionDirectory="%windir%\IIS Temporary Compressed Files"
HcDoDiskSpaceLimiting="FALSE"
HcDoDynamicCompression="TRUE"
HcDoOnDemandCompression="TRUE"
HcDoStaticCompression="TRUE"
HcExpiresHeader="Wed, 01 Jan 1997 12:00:00 GMT"
HcFilesDeletedPerDiskFree="256"
HcIoBufferSize="8192"
HcMaxDiskSpaceUsage="99614720"
HcMaxQueueLength="1000"
HcMinFileSizeForComp="1"
HcNoCompressionForHttp10="FALSE"
HcNoCompressionForProxies="FALSE"
HcNoCompressionForRange="FALSE"
HcSendCacheHeaders="FALSE"
>
</IIsCompressionSchemes>