/// <summary /> public override System.ServiceModel.Channels.BindingElementCollection CreateBindingElements() { var elements = base.CreateBindingElements(); var encodingBinding = elements.Single(e => e is System.ServiceModel.Channels.BinaryMessageEncodingBindingElement); ((System.ServiceModel.Channels.BinaryMessageEncodingBindingElement)encodingBinding).CompressionFormat = System.ServiceModel.Channels.CompressionFormat.GZip; var bindingElementCollection = new System.ServiceModel.Channels.BindingElementCollection(); foreach (var bindingElement in elements) { bindingElementCollection.Add(bindingElement); } return(bindingElementCollection.Clone()); }
/// <summary> /// Cria um binding para comunicação. /// </summary> /// <param name="securityMode">Modo de segurança.</param> /// <param name="requireClientCertificates"></param> /// <returns></returns> public static System.ServiceModel.Channels.Binding CreateBinding(SecurityMode securityMode, bool requireClientCertificates) { WSHttpBinding binding = new WSHttpBinding(securityMode); binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None; binding.ReaderQuotas = System.Xml.XmlDictionaryReaderQuotas.Max; binding.MaxReceivedMessageSize = System.Xml.XmlDictionaryReaderQuotas.Max.MaxStringContentLength; System.ServiceModel.Channels.Binding binding2 = binding; if ((securityMode == SecurityMode.Transport) && requireClientCertificates) { binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate; System.ServiceModel.Channels.BindingElementCollection bindingElementsInTopDownChannelStackOrder = binding.CreateBindingElements(); var item = new System.ServiceModel.Channels.TransportSecurityBindingElement(); System.ServiceModel.Security.Tokens.X509SecurityTokenParameters parameters = new System.ServiceModel.Security.Tokens.X509SecurityTokenParameters(); parameters.InclusionMode = System.ServiceModel.Security.Tokens.SecurityTokenInclusionMode.AlwaysToRecipient; item.EndpointSupportingTokenParameters.Endorsing.Add(parameters); bindingElementsInTopDownChannelStackOrder.Insert(bindingElementsInTopDownChannelStackOrder.Count - 1, item); binding2 = new System.ServiceModel.Channels.CustomBinding(bindingElementsInTopDownChannelStackOrder); } return(binding2); }