// This is effectively just a copy of WSHttpBinding.TryCreate(), only it news up the 2007 version internal new static bool TryCreate(SecurityBindingElement sbe, TransportBindingElement transport, ReliableSessionBindingElement rsbe, TransactionFlowBindingElement tfbe, out Binding binding) { bool isReliableSession = (rsbe != null); binding = null; // reverse GetTransport HttpTransportSecurity transportSecurity = WSHttpSecurity.GetDefaultHttpTransportSecurity(); UnifiedSecurityMode mode; if (!WSHttpBinding.GetSecurityModeFromTransport(transport, transportSecurity, out mode)) { return(false); } HttpsTransportBindingElement httpsBinding = transport as HttpsTransportBindingElement; if (httpsBinding != null && httpsBinding.MessageSecurityVersion != null) { if (httpsBinding.MessageSecurityVersion.SecurityPolicyVersion != s_WS2007MessageSecurityVersion.SecurityPolicyVersion) { return(false); } } WSHttpSecurity security; if (WS2007HttpBinding.TryCreateSecurity(sbe, mode, transportSecurity, isReliableSession, out security)) { WS2007HttpBinding ws2007HttpBinding = new WS2007HttpBinding(security, isReliableSession); bool allowCookies; if (!WSHttpBinding.TryGetAllowCookiesFromTransport(transport, out allowCookies)) { return(false); } ws2007HttpBinding.AllowCookies = allowCookies; binding = ws2007HttpBinding; } if (rsbe != null && rsbe.ReliableMessagingVersion != ReliableMessagingVersion.WSReliableMessaging11) { return(false); } if (tfbe != null && tfbe.TransactionProtocol != TransactionProtocol.WSAtomicTransaction11) { return(false); } return(binding != null); }
internal static bool TryCreate(SecurityBindingElement sbe, TransportBindingElement transport, ReliableSessionBindingElement rsbe, TransactionFlowBindingElement tfbe, out Binding binding) { UnifiedSecurityMode mode; WSHttpSecurity security2; bool isReliableSession = rsbe != null; binding = null; HttpTransportSecurity defaultHttpTransportSecurity = WSHttpSecurity.GetDefaultHttpTransportSecurity(); if (!WSHttpBinding.GetSecurityModeFromTransport(transport, defaultHttpTransportSecurity, out mode)) { return(false); } HttpsTransportBindingElement element = transport as HttpsTransportBindingElement; if (((element != null) && (element.MessageSecurityVersion != null)) && (element.MessageSecurityVersion.SecurityPolicyVersion != WS2007MessageSecurityVersion.SecurityPolicyVersion)) { return(false); } if (TryCreateSecurity(sbe, mode, defaultHttpTransportSecurity, isReliableSession, out security2)) { bool flag2; WS2007HttpBinding binding2 = new WS2007HttpBinding(security2, isReliableSession); if (!WSHttpBinding.TryGetAllowCookiesFromTransport(transport, out flag2)) { return(false); } binding2.AllowCookies = flag2; binding = binding2; } if ((rsbe != null) && (rsbe.ReliableMessagingVersion != ReliableMessagingVersion.WSReliableMessaging11)) { return(false); } if ((tfbe != null) && (tfbe.TransactionProtocol != TransactionProtocol.WSAtomicTransaction11)) { return(false); } return(binding != null); }