/// <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());
        }
Пример #2
0
        /// <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);
        }