Example #1
0
        public static void Configure(HttpBindingBase binding)
        {
            if (binding == null)
                throw new ArgumentNullException("binding");

            binding.BypassProxyOnLocal = true;
            binding.SendTimeout = new TimeSpan(0, 0, 30, 0); // 30 minute timeout
            binding.MaxBufferSize = Int32.MaxValue;
            binding.MaxBufferPoolSize = 2147483647;
            binding.MaxReceivedMessageSize = Int32.MaxValue;
            binding.ReaderQuotas.MaxArrayLength = Int32.MaxValue;
            binding.ReaderQuotas.MaxBytesPerRead = Int32.MaxValue;
            binding.ReaderQuotas.MaxDepth = Int32.MaxValue;
            binding.ReaderQuotas.MaxNameTableCharCount = Int32.MaxValue;
            binding.ReaderQuotas.MaxStringContentLength = Int32.MaxValue;
        }
        private static void GetHttpBindingBaseDetails(HttpBindingBase binding, ref string name, ref string mode, ref string credentialType)
        {
            if (binding is BasicHttpContextBinding)
            {
                name = GetBindingName <BasicHttpContextBinding>(binding);
            }
            else if (binding is BasicHttpBinding)
            {
                name = GetBindingName <BasicHttpBinding>(binding);
            }
            else if (binding is NetHttpBinding)
            {
                name = GetBindingName <NetHttpBinding>(binding);
            }
            else if (binding is NetHttpsBinding)
            {
                name = GetBindingName <NetHttpsBinding>(binding);
            }
            else if (binding is BasicHttpsBinding)
            {
                name = GetBindingName <BasicHttpsBinding>(binding);
            }
            else
            {
                name = GetBindingName <HttpBindingBase>(binding);
            }

            BasicHttpSecurity basicHttpSecurity = binding.BasicHttpSecurity;

            mode = basicHttpSecurity?.Mode.ToString();
            switch (basicHttpSecurity?.Mode)
            {
            case BasicHttpSecurityMode.None:
                credentialType = "N/A";
                break;

            case BasicHttpSecurityMode.Transport:
            case BasicHttpSecurityMode.TransportCredentialOnly:
                credentialType = basicHttpSecurity.Transport?.ClientCredentialType.ToString();
                break;

            case BasicHttpSecurityMode.Message:
            case BasicHttpSecurityMode.TransportWithMessageCredential:
                credentialType = $"{basicHttpSecurity.Transport?.ClientCredentialType.ToString()}+{basicHttpSecurity.Message?.ClientCredentialType.ToString()}";
                break;
            }
        }
 private void InitBindings(string url)
 {
     addr = new EndpointAddress(url);
     if (url.StartsWith("https://"))
     {
         binding = new BasicHttpsBinding();
     }
     else
     {
         binding = new BasicHttpBinding();
     }
 }
 // BasicHttpContextBinding uses this hook to not emit AllowCookies
 internal virtual void InitializeAllowCookies(HttpBindingBase binding)
 {
     SetPropertyValueIfNotDefaultValue(ConfigurationStrings.AllowCookies, binding.AllowCookies);
 }
Example #5
0
        internal static bool TryCreate(BindingElementCollection elements, out Binding binding)
        {
            binding = null;
            if (elements.Count > 3)
            {
                return(false);
            }

            SecurityBindingElement        securityElement = null;
            MessageEncodingBindingElement encoding        = null;
            HttpTransportBindingElement   transport       = null;

            foreach (BindingElement element in elements)
            {
                if (element is SecurityBindingElement)
                {
                    securityElement = element as SecurityBindingElement;
                }
                else if (element is TransportBindingElement)
                {
                    transport = element as HttpTransportBindingElement;
                }
                else if (element is MessageEncodingBindingElement)
                {
                    encoding = element as MessageEncodingBindingElement;
                }
                else
                {
                    return(false);
                }
            }

            HttpsTransportBindingElement httpsTransport = transport as HttpsTransportBindingElement;

            if ((securityElement != null) && (httpsTransport != null) && (httpsTransport.RequireClientCertificate != TransportDefaults.RequireClientCertificate))
            {
                return(false);
            }

            // process transport binding element
            UnifiedSecurityMode   mode;
            HttpTransportSecurity transportSecurity = new HttpTransportSecurity();

            if (!GetSecurityModeFromTransport(transport, transportSecurity, out mode))
            {
                return(false);
            }
            if (encoding == null)
            {
                return(false);
            }
            // BasicHttpBinding only supports Soap11
            if (!encoding.CheckEncodingVersion(EnvelopeVersion.Soap11))
            {
                return(false);
            }

            BasicHttpSecurity security;

            if (!HttpBindingBase.TryCreateSecurity(securityElement, mode, transportSecurity, out security))
            {
                return(false);
            }

            BasicHttpBinding basicHttpBinding = new BasicHttpBinding(security);

            basicHttpBinding.InitializeFrom(transport, encoding);

            // make sure all our defaults match
            if (!basicHttpBinding.IsBindingElementsMatch(transport, encoding))
            {
                return(false);
            }

            binding = basicHttpBinding;
            return(true);
        }