20

WCF 4.5 支持 GZIP,无需第三方库或手写扩展。我通过 TCP 绑定使其工作,但找不到通过 HTTP 绑定使其工作的方法。我的 wcf - 服务自托管在 Windows 服务中。

插件:我不允许使用 IIS;我无法切换到任何 WCF 替换。

这适用于 gzip:

binding="customBinding" bindingConfiguration="tcpCompressionBinding" name="tcp" 

这就是我目前用于http的:

binding="basicHttpBinding" bindingConfiguration="httpBinding" name="http"

该文档并没有真正帮助我:http: //msdn.microsoft.com/en-us/library/dd456789.aspx

但是,据此它应该工作:

从 WCF 4.5 开始,WCF 二进制编码器增加了对压缩的支持。压缩类型由 CompressionFormat 属性配置。客户端和服务都必须配置 CompressionFormat 属性。压缩适用于 HTTP、HTTPS 和 TCP 协议。如果客户端指定使用压缩但服务不支持它,则会引发协议异常,指示协议不匹配。有关更多信息,请参阅选择消息编码器

4

1 回答 1

23

根据要求,我复制了我的评论作为答案:

“由于此属性仅在 binaryMessageEncodingBindingElement 上公开,因此您需要创建如下自定义绑定才能使用此功能:

<customBinding>
  <binding name="BinaryCompressionBinding"> 
    <binaryMessageEncoding compressionFormat="GZip"/> 
    <httpTransport /> 
  </binding>
</customBinding> 

并接收压缩消息,因此必须在客户端和服务上的 binaryMessageEncoding 元素上配置 compressionFormat 属性。“客户端和服务都需要同意发送

于 2013-04-07T14:57:20.623 回答