Как получить сжатие gzip работает в WCF 4.5

WCF 4.5 поддерживает GZIP без сторонних библиотек или рукописных расширений. Я получил его работу через привязку TCP, но не могу найти способ заставить его работать через привязку HTTP. мой wcf-сервис самостоятельно размещен в службе windows.

Addon: мне не разрешено использовать 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. Если клиент указывает использовать сжатие, но служба не поддерживает его исключение протокола, указывающее на несоответствие протокола. Дополнительные сведения см. В разделе Выбор кодировщика сообщений

1 ответов


в соответствии с запросом я скопировал свой комментарий как ответ:

" Так как это свойство предоставляется только на binaryMessageEncodingBindingElement, вам нужно будет создать пользовательский привязка, как показано ниже, чтобы использовать эту функцию:

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

и получать сжатые сообщения и, следовательно, compressionFormat свойство должно быть настроено для элемента binaryMessageEncoding на и клиент и обслуживание. "И клиент, и служба нужно согласиться отправить