2013-03-28 47 views
18

WCF 4.5支持GZIP,無需第三方庫或手寫擴展。 我知道它通過TCP綁定工作,但無法找到通過HTTP綁定使其工作的方法。 我的wcf - 服務是在Windows服務中自行託管的。如何在WCF 4.5中獲得gzip壓縮功能

插件:我不允許使用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協議。如果客戶端指定使用壓縮但服務不支持它,則會拋出協議異常來指示協議不匹配。欲瞭解更多信息,請參閱選擇消息編碼器

+0

一段時間以前我曾與WCF 4.0 – rekire 2013-03-28 20:44:08

+1

同樣的問題,不要這樣想。WCF 4.0曾在gzip的支持沒有建立。這是一個4.5的功能。 – NickD 2013-03-28 20:45:13

+0

很酷,我不知道, – rekire 2013-03-28 20:47:13

回答

21

根據要求我複製的答案我的評論:

「由於此屬性只在 binaryMessageEncodingBindingElement暴露,你需要創建一個自定義 像下面結合使用此功能:

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

並接收壓縮的消息,因此必須在 客戶端和服務上的binaryMessageEncoding元素上配置compressionFormat 屬性。 「無論是客戶端和服務必須同意發送

+0

舊帖子我知道但它不工作g對我來說。任何想法爲什麼? – 2016-10-17 13:25:43