我们希望在WCF 4.5服务上使用GZip压缩。 我们在ServiceBus上托管服务,并使用NetTcpRelayBinding。
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 :(得分:0)
试试这个:
<customBinding>
<binding name="BinaryCompressionBinding">
<binaryMessageEncoding compressionFormat="GZip"/>
<httpTransport />
</binding>
</customBinding>