web-services - WebService 的 IIS 压缩返回大字符串值

标签 web-services iis asmx gzip

我有一个 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服务调用的详细 View ,我可以看到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 检查过,并且正确的 header 已放置在请求 header 中。

对于第 10 项,我在我的应用中没有看到任何需要触摸此项的设置。

对于第 11 项,我收到的状态代码是 200。

对于第 12 项,无需指定代理即可访问应用。

对于第 13 项,请求是一个 Web 服务。

最佳答案

安杰洛,

IIS6 上的设置组合非常敏感且无情。例如,各种可配置文件扩展名必须各自以新行开始 - 不以空格分隔。 IIS6 压缩的敏感度尤其在涉及动态生成的内容(例如从 Web 服务返回)时更是如此。

尝试以下设置,执行 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>

关于web-services - WebService 的 IIS 压缩返回大字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9959472/

相关文章:

c# - 以 XmlDocument 作为返回类型的 Web 方法在 asp.net core 的 SoapCore 中失败

python - 如何在python中使用web.py处理上传的csv文件

java - Apache CXF FaultListener 未在 cxf 总线中注册

没有应用程序池回收的 IIS 7 IP 限制?

c# - 尝试访问 iis 6.0 Web 服务时出现错误 403

c# - Web 服务完成后分离线程

java.lang.LinkageError : loader constraint violation in interface itable initialization: when resolving method

web-services - Azure 网站与 Azure 服务的连接

c# - 如何从 Azure 上运行的 IIS 进程重新启动服务器?

web-services - 找不到类型或命名空间名称 'webmethod'