2013-12-19 26 views
0

我們希望在我們的WCF 4.5服務使用gzip壓縮壓縮託管在ServiceBus WCF流量。 我們在ServiceBus上託管服務並使用NetTcpRelayBinding。如何使用NetTcpRelay結合

WCF 4.5應該支持gzip壓縮OOB。 我已經延長了標準NetTcpRelayBinding和gzip壓縮翻

public class CompressedNetTcpRelayBinding : NetTcpRelayBinding 
    { 
     public override BindingElementCollection CreateBindingElements() 
     { 
      var elements = base.CreateBindingElements(); 
      var encodingBinding = elements.Single(e => e is BinaryMessageEncodingBindingElement); 
      ((BinaryMessageEncodingBindingElement)encodingBinding).CompressionFormat = CompressionFormat.GZip; 

      var bindingElementCollection = new BindingElementCollection(); 
      foreach (var bindingElement in elements) 
      { 
       bindingElementCollection.Add(bindingElement); 
      } 

      return bindingElementCollection.Clone(); 
     } 
    } 

然而,當我嘗試舉辦我得到以下異常服務:

上配置的運輸這種結合似乎並不支持消息編碼器上指定的CompressionFormat(GZip)。要解決此問題,請將BinaryMessageEncodingBindingElement上的CompressionFormat設置爲'None'或使用其他傳輸。

NetTcpRelayBinding使用默認Microsoft.ServiceBus.TcpRelayTransportBindingElement。

我該怎麼做才能做到這一點?

回答

0

試試這個:

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

How to get gzip compression working in WCF 4.5

+0

如果你看看代碼,你會看到這正是我試圖做的,但它似乎不NetTcpRelay工作捆綁。 – MrBob