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; }
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); }