Exemple #1
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);
        }
 internal static bool TryCreate(BindingElementCollection elements, out Binding binding)
 {
     UnifiedSecurityMode mode;
     BasicHttpSecurity security2;
     binding = null;
     if (elements.Count > 3)
     {
         return false;
     }
     SecurityBindingElement securityElement = null;
     MessageEncodingBindingElement encoding = null;
     HttpTransportBindingElement http = null;
     foreach (BindingElement element4 in elements)
     {
         if (element4 is SecurityBindingElement)
         {
             securityElement = element4 as SecurityBindingElement;
         }
         else if (element4 is TransportBindingElement)
         {
             http = element4 as HttpTransportBindingElement;
         }
         else if (element4 is MessageEncodingBindingElement)
         {
             encoding = element4 as MessageEncodingBindingElement;
         }
         else
         {
             return false;
         }
     }
     HttpTransportSecurity transportSecurity = new HttpTransportSecurity();
     if (!GetSecurityModeFromTransport(http, transportSecurity, out mode))
     {
         return false;
     }
     if (encoding == null)
     {
         return false;
     }
     if (!encoding.CheckEncodingVersion(System.ServiceModel.EnvelopeVersion.Soap11))
     {
         return false;
     }
     if (!TryCreateSecurity(securityElement, mode, transportSecurity, out security2))
     {
         return false;
     }
     BasicHttpBinding binding2 = new BasicHttpBinding(security2);
     binding2.InitializeFrom(http, encoding);
     if (!binding2.IsBindingElementsMatch(http, encoding))
     {
         return false;
     }
     binding = binding2;
     return true;
 }
Exemple #3
0
        internal static bool TryCreate(BindingElementCollection elements, out Binding binding)
        {
            UnifiedSecurityMode mode;
            BasicHttpSecurity   security2;

            binding = null;
            if (elements.Count > 3)
            {
                return(false);
            }
            SecurityBindingElement        securityElement = null;
            MessageEncodingBindingElement encoding        = null;
            HttpTransportBindingElement   http            = null;

            foreach (BindingElement element4 in elements)
            {
                if (element4 is SecurityBindingElement)
                {
                    securityElement = element4 as SecurityBindingElement;
                }
                else if (element4 is TransportBindingElement)
                {
                    http = element4 as HttpTransportBindingElement;
                }
                else if (element4 is MessageEncodingBindingElement)
                {
                    encoding = element4 as MessageEncodingBindingElement;
                }
                else
                {
                    return(false);
                }
            }
            HttpTransportSecurity transportSecurity = new HttpTransportSecurity();

            if (!GetSecurityModeFromTransport(http, transportSecurity, out mode))
            {
                return(false);
            }
            if (encoding == null)
            {
                return(false);
            }
            if (!encoding.CheckEncodingVersion(System.ServiceModel.EnvelopeVersion.Soap11))
            {
                return(false);
            }
            if (!TryCreateSecurity(securityElement, mode, transportSecurity, out security2))
            {
                return(false);
            }
            BasicHttpBinding binding2 = new BasicHttpBinding(security2);

            binding2.InitializeFrom(http, encoding);
            if (!binding2.IsBindingElementsMatch(http, encoding))
            {
                return(false);
            }
            binding = binding2;
            return(true);
        }