【发布时间】:2010-12-16 15:29:17
【问题描述】:
我目前为我的 WCF 服务使用自定义 gzip 编码器。如果可能的话,我想用内置的 IIS 7 压缩替换它。我在网上找不到有关如何做到这一点的信息。
有没有办法为 WCF 服务启用 IIS 7 压缩? 您知道 .Net 4 是否会开箱即用地支持此功能?
6 月 15 日编辑:我仍在寻找一种方法来用主流方法替换我们的自定义 gzip 编码器,所以如果你知道如何使用 .Net 来做到这一点4和IIS 7,请回答这个问题。
谢谢
侧边栏:我尝试手动执行此操作
由于我无法通过简单地转动几个旋钮来完成它,我决定尝试手动启用它。
到目前为止,我有:
- 安装并启用 IIS 7 动态压缩模块
- 更改了 applicationHost.config 文件的部分以启用
mimeType="application/soap+xml"和mimeType="application/xop+xml"的压缩。
我使用 HTTP 嗅探器来嗅探从我的应用程序(Windows 窗体)发送的流量。我看到请求没有Accept-Encoding:gzip,deflate http 标头。
所以我
- 使用
OperationContextScope类及其OutgoingMessageProperties手动将其添加到所有拨出呼叫。 (如果我找到解决方案,我会在稍后发布详细信息)。
使用 http 嗅探器,我可以看到客户端标头现在具有正确的标头:
POST /### path to my service ####/MyService.svc HTTP/1.1
MIME-Version: 1.0
Content-Type: multipart/related; type="application/xop+xml";
start="<http://tempuri.org/0>";
boundary="uuid:####### some uuid #############";
start-info="application/soap+xml"
Accept-Encoding: gzip,deflate
Host: ####### my server name #############
Content-Length: 1753
Expect: 100-continue
但是服务器响应仍然没有被压缩。
为什么服务器响应没有被压缩?我是否使用了正确的 mime 类型?一旦我让服务器返回一个压缩的答案,客户端会自动解压还是必须在客户端编写代码来解压?
感谢您的帮助
【问题讨论】:
-
我的问题似乎与stackoverflow.com/questions/1741768/… 重复。该问题适用于 IIS 6,但我认为该解决方案也适用于此。如果是这种情况,我将把这个问题作为一个副本关闭。
标签: wcf compression