Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用NetCPRelay绑定压缩ServiceBus上承载的WCF流量_C#_Wcf_Wcf Binding_Servicebus_Nettcprelaybinding - Fatal编程技术网

C# 如何使用NetCPRelay绑定压缩ServiceBus上承载的WCF流量

C# 如何使用NetCPRelay绑定压缩ServiceBus上承载的WCF流量,c#,wcf,wcf-binding,servicebus,nettcprelaybinding,C#,Wcf,Wcf Binding,Servicebus,Nettcprelaybinding,我们希望在WCF 4.5服务上使用GZip压缩。 我们在ServiceBus上托管服务,并使用NetCPRelayBinding WCF4.5应该支持GZip压缩OOB。 我已经扩展了标准的netcprelaybinding并启用了GZip压缩 public class CompressedNetTcpRelayBinding : NetTcpRelayBinding { public override BindingElementCollection Crea

我们希望在WCF 4.5服务上使用GZip压缩。 我们在ServiceBus上托管服务,并使用NetCPRelayBinding

WCF4.5应该支持GZip压缩OOB。 我已经扩展了标准的netcprelaybinding并启用了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();
        }
    }
但是,当我尝试托管该服务时,会出现以下异常:

此绑定上配置的传输似乎不支持消息编码器上指定的压缩格式GZip。要解决此问题,请将BinaryMessageEncodingBindingElement上的CompressionFormat设置为“无”或使用其他传输

NetCPRelayBinding使用默认的Microsoft.ServiceBus.TcpRelayTransportBindingElement

我应该怎么做才能使这项工作正常进行?

试试以下方法:

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

如果你看一下代码,你会发现这正是我试图做的,但它似乎不适用于NetCPRelay绑定。