public override BindingElementCollection CreateBindingElements() { BindingElementCollection bindingElementsCollection = new BindingElementCollection(); bindingElementsCollection.Add(this.messageEncodingBindingElement); bindingElementsCollection.Add(this.transportBindingElement); return bindingElementsCollection.Clone(); }
public override BindingElementCollection CreateBindingElements() { BindingElementCollection elements = new BindingElementCollection(); elements.Add(encoding); elements.Add(transport); return elements; }
public override BindingElementCollection CreateBindingElements() { BindingElementCollection col = new BindingElementCollection(); col.Add(be); col.Add(tcpbe); return col; }
public override BindingElementCollection CreateBindingElements() { BindingElementCollection elements = new BindingElementCollection { this.txFlow }; if (this.reliableSession.Enabled) { elements.Add(this.session); } SecurityBindingElement item = this.CreateMessageSecurity(); if (item != null) { elements.Add(item); } WSMessageEncodingHelper.SyncUpEncodingBindingElementProperties(this.textEncoding, this.mtomEncoding); if (this.MessageEncoding == WSMessageEncoding.Text) { elements.Add(this.textEncoding); } else if (this.MessageEncoding == WSMessageEncoding.Mtom) { elements.Add(this.mtomEncoding); } elements.Add(this.GetTransport()); return elements.Clone(); }
public CustomPolicyConversionContext (WS.Binding binding, ServiceEndpoint endpoint) : base (endpoint) { this.binding = binding; assertions = new PolicyAssertionCollection (); binding_elements = ((CustomBinding)endpoint.Binding).Elements; }
public override BindingElementCollection CreateBindingElements() { BindingElementCollection elements = new BindingElementCollection(); elements.Add(this.encodingElement); elements.Add(this.transportElement); return elements.Clone(); }
internal static bool TryCreate(BindingElementCollection bindingElements, out Binding binding) { if (bindingElements == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("bindingElements"); } binding = null; ContextBindingElement element = bindingElements.Find<ContextBindingElement>(); if (element != null) { Binding binding2; BindingElementCollection elements = new BindingElementCollection(bindingElements); elements.Remove<ContextBindingElement>(); if (WSHttpBindingBase.TryCreate(elements, out binding2)) { bool allowCookies = ((WSHttpBinding) binding2).AllowCookies; if ((allowCookies && (element.ContextExchangeMechanism == ContextExchangeMechanism.HttpCookie)) || (!allowCookies && (element.ContextExchangeMechanism == ContextExchangeMechanism.ContextSoapHeader))) { WSHttpContextBinding binding3 = new WSHttpContextBinding((WSHttpBinding) binding2) { ContextProtectionLevel = element.ProtectionLevel, ContextManagementEnabled = element.ContextManagementEnabled }; binding = binding3; } } } return (binding != null); }
public override BindingElementCollection CreateBindingElements() { BindingElementCollection elements = new BindingElementCollection { this.txFlow, this.session }; SecurityBindingElement item = this.CreateMessageSecurity(); if (item != null) { elements.Add(item); } elements.Add(this.compositeDuplex); elements.Add(this.oneWay); WSMessageEncodingHelper.SyncUpEncodingBindingElementProperties(this.textEncoding, this.mtomEncoding); if (this.MessageEncoding == WSMessageEncoding.Text) { elements.Add(this.textEncoding); } else if (this.MessageEncoding == WSMessageEncoding.Mtom) { elements.Add(this.mtomEncoding); } elements.Add(this.httpTransport); return elements.Clone(); }
protected override void AddBindingElements(BindingElementCollection bindingElements) { base.AddCompositeDuplexBindingElement(bindingElements, this.clientBaseAddress); base.AddOneWayBindingElement(bindingElements); base.AddTextEncodingBindingElement(bindingElements); base.AddInteropHttpsTransportBindingElement(bindingElements); }
protected override void AddBindingElements(BindingElementCollection bindingElements) { bindingElements.Add(new BinaryMessageEncodingBindingElement()); base.AddTransactionFlowBindingElement(bindingElements); base.AddWindowsStreamSecurityBindingElement(bindingElements); base.AddNamedPipeBindingElement(bindingElements); }
public override BindingElementCollection CreateBindingElements() { var res = new BindingElementCollection(); res.Add(new TextMessageEncodingBindingElement() { MessageVersion = this.messageVersion }); res.Add(SecurityBindingElement.CreateUserNameOverTransportBindingElement()); res.Add(new AutoSecuredHttpTransportElement()); return res; }
public override BindingElementCollection CreateBindingElements() { BindingElementCollection elements = new BindingElementCollection(); elements.Add(this.encoding); elements.Add(this.transport); return(elements); }
public override BindingElementCollection CreateBindingElements() { BindingElementCollection col = new BindingElementCollection(); col.Add(be); col.Add(tcpbe); return(col); }
public override BindingElementCollection CreateBindingElements() { BindingElementCollection elemens = new BindingElementCollection(); elemens.Add(new TextMessageEncodingBindingElement()); elemens.Add(new MyBindingElement()); elemens.Add(new HttpTransportBindingElement()); return elemens.Clone(); }
internal static bool TryCreate(BindingElementCollection elements, out Binding binding) { Microsoft.ServiceBus.UnifiedSecurityMode unifiedSecurityMode; NetOnewayRelaySecurity netOnewayRelaySecurity; bool flag; binding = null; if (elements.Count > 3) { return(false); } SecurityBindingElement securityBindingElement = null; BinaryMessageEncodingBindingElement binaryMessageEncodingBindingElement = null; RelayedOnewayTransportBindingElement relayedOnewayTransportBindingElement = null; using (IEnumerator <BindingElement> enumerator = elements.GetEnumerator()) { while (enumerator.MoveNext()) { BindingElement current = enumerator.Current; if (current is SecurityBindingElement) { securityBindingElement = current as SecurityBindingElement; } else if (current is TransportBindingElement) { relayedOnewayTransportBindingElement = current as RelayedOnewayTransportBindingElement; } else if (!(current is MessageEncodingBindingElement)) { flag = false; return(flag); } else { binaryMessageEncodingBindingElement = current as BinaryMessageEncodingBindingElement; } } unifiedSecurityMode = (!relayedOnewayTransportBindingElement.TransportProtectionEnabled ? Microsoft.ServiceBus.UnifiedSecurityMode.None | Microsoft.ServiceBus.UnifiedSecurityMode.Message : Microsoft.ServiceBus.UnifiedSecurityMode.Transport | Microsoft.ServiceBus.UnifiedSecurityMode.TransportWithMessageCredential); if (binaryMessageEncodingBindingElement == null) { return(false); } if (!NetOnewayRelayBinding.TryCreateSecurity(securityBindingElement, relayedOnewayTransportBindingElement.RelayClientAuthenticationType, unifiedSecurityMode, out netOnewayRelaySecurity)) { return(false); } NetOnewayRelayBinding netOnewayRelayBinding = new NetOnewayRelayBinding(netOnewayRelaySecurity); NetOnewayRelayBinding.InitializeFrom(relayedOnewayTransportBindingElement, binaryMessageEncodingBindingElement); if (!netOnewayRelayBinding.IsBindingElementsMatch(relayedOnewayTransportBindingElement, binaryMessageEncodingBindingElement)) { return(false); } binding = netOnewayRelayBinding; return(true); } return(flag); }
public override BindingElementCollection CreateBindingElements() { var transport = _useHttps ? new HttpsTransportBindingElement() : new HttpTransportBindingElement(); if (_maxReceivedMessageSize.HasValue) { transport.MaxReceivedMessageSize = _maxReceivedMessageSize.Value; } var encoding = new TextMessageEncodingBindingElement(); // [OIO IDWS SOAP 1.1] requires SOAP 1.2 and WS-Adressing 1.0 encoding.MessageVersion = MessageVersion.Soap12WSAddressing10; // AlwaysToInitiator is required by the [OIO IDWS SOAP 1.1] profile. This specifies that the server certificate must be embedded in the response. var recipientTokenParameters = new X509SecurityTokenParameters( X509KeyIdentifierClauseType.Any, SecurityTokenInclusionMode.AlwaysToInitiator); var initiatorTokenParameters = new CustomizedIssuedSecurityTokenParameters( "http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0" ); initiatorTokenParameters.UseStrTransform = true; var asymmetric = new AsymmetricSecurityBindingElement(recipientTokenParameters, initiatorTokenParameters); // Must be true in order for client to accept embedded server certificates instead of references. This is required by the [OIO IDWS SOAP 1.1] profile. // However, the client must still specify the server certificate explicitly. // Have not figured out how the client can use the embedded server certificate and make trust to it through a CA certificate and a CN (Common Name). This way the client should not need the server certificate. asymmetric.AllowSerializedSigningTokenOnReply = true; // No need for derived keys when both parties has a certificate. Also OIO-IDWS-SOAP does not make use of derived keys. asymmetric.SetKeyDerivation(false); // Include token (encrypted assertion from NemLog-in STS) in signature asymmetric.ProtectTokens = true; // Specifies that WCF can send and receive unsecured responses to secured requests. // Concrete this means that SOAP faults are send unencrypted. [OIO IDWS SOAP 1.1] does not specify whether or not SOAP faults can be encrypted but it looks like they should not be encrypted. // If encrypted the client is not able to process the encrypted SOAP fault if client is not setup correctly. // setting EnableUnsecuredResponse to true makes normal responses unsigned and processed by the client without error. This is not what we want :) //asymmetric.EnableUnsecuredResponse = true; var elements = new BindingElementCollection(); elements.Add(asymmetric); elements.Add(encoding); elements.Add(transport); return(elements); }
public override BindingElementCollection CreateBindingElements() { BindingElementCollection elements = new BindingElementCollection(); elements.Add(this._simpleDatagramBindingElement); elements.Add(this._messageEncodingBindingElement); elements.Add(this._transportBindingElement); return(elements); }
protected override void AddBindingElements(BindingElementCollection bindingElements) { if (this.supportingTokenBE != null) { base.AddTransportSecurityBindingElement(bindingElements); bindingElements.Add(this.supportingTokenBE); } base.AddBindingElements(bindingElements); }
public override BindingElementCollection CreateBindingElements() { BindingElementCollection bindingElements = new BindingElementCollection(); bindingElements.Add(this.textEncoding); bindingElements.Add(this.udpTransport); return(bindingElements.Clone()); }
public override BindingElementCollection CreateBindingElements() { BindingElementCollection elements = new BindingElementCollection(); elements.Add(CreateSecurity()); elements.Add(CreateMessageEncoding()); elements.Add(CreateTransport()); return(elements.Clone()); }
public override BindingElementCollection CreateBindingElements() { BindingElementCollection elemens = new BindingElementCollection(); elemens.Add(new TextMessageEncodingBindingElement()); elemens.Add(new MyBindingElement()); elemens.Add(new HttpTransportBindingElement()); return(elemens.Clone()); }
private void ValidateNoMSMQandTransactionFlow(ServiceEndpoint endpoint) { BindingElementCollection elements = endpoint.Binding.CreateBindingElements(); if ((elements.Find <TransactionFlowBindingElement>() != null) && (elements.Find <MsmqTransportBindingElement>() != null)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(System.ServiceModel.SR.GetString("SFxTransactionFlowAndMSMQ", new object[] { endpoint.Address.Uri.AbsoluteUri }))); } }
public override BindingElementCollection CreateBindingElements() { BindingElementCollection elements = new BindingElementCollection(); elements.Add(_simpleBindingElement); elements.Add(_messageEncodingBindingElement); elements.Add(_transportBindingElement); return(elements.Clone()); }
/// <summary> /// Creates a clone of the existing BindingElement and returns it /// </summary> public override BindingElementCollection CreateBindingElements() { BindingElementCollection bindingElements = new BindingElementCollection(); //Only create once bindingElements.Add(this.BindingElement); //Return the clone return(bindingElements.Clone()); }
static void ListAllBindingElements(Binding binding) { BindingElementCollection elements = binding.CreateBindingElements(); for (int i = 0; i < elements.Count; i++) { Console.WriteLine("{0}. {1}", i + 1, elements[i].GetType().FullName); } }
protected void AddTextEncodingBindingElement(BindingElementCollection bindingElements) { TextMessageEncodingBindingElement item = new TextMessageEncodingBindingElement { WriteEncoding = Encoding.UTF8, MessageVersion = MessagingVersionHelper.MessageVersion(this.protocolVersion) }; bindingElements.Add(item); }
public static Binding CreateUserNameForSslNegotiatedBinding() { BindingElementCollection bec = new BindingElementCollection(); bec.Add(SecurityBindingElement.CreateUserNameForSslBindingElement()); bec.Add(new TextMessageEncodingBindingElement()); bec.Add(new HttpTransportBindingElement()); return(new CustomBinding(bec)); }
/// <summary> /// Returns an ordered collection of binding elements contained in the current binding. /// (Overrides <see cref="System.ServiceModel.Channels.Binding.CreateBindingElements"> /// Binding.CreateBindingElements</see>.) /// </summary> /// <returns> /// An ordered collection of binding elements contained in the current binding. /// </returns> public override BindingElementCollection CreateBindingElements() { BindingElementCollection bindingElements = new BindingElementCollection(); bindingElements.Add(_httpMessageEncodingBindingElement); bindingElements.Add(GetTransport()); return(bindingElements.Clone()); }
void Snippet8() { // <Snippet8> CustomBinding binding = new CustomBinding(); BindingParameterCollection bpCol = new BindingParameterCollection(); BindingContext context = new BindingContext(binding, bpCol); BindingElementCollection bindingElements = context.RemainingBindingElements; // </Snippet8> }
/// <summary> /// Create the set of binding elements that make up this binding. /// </summary> /// <returns> /// A <see cref="T:System.Collections.Generic.ICollection`1"/> object of type <see cref="T:System.ServiceModel.Channels.BindingElement"/> that contains the binding elements from the current binding object in the correct order. /// </returns> public override BindingElementCollection CreateBindingElements() { BindingElementCollection elements = new BindingElementCollection(); elements.Add(m_encoding); elements.Add(m_transport); return(elements.Clone()); }
public void CreateBindingElements() { WebHttpBinding b = new WebHttpBinding(); BindingElementCollection bc = b.CreateBindingElements(); Assert.AreEqual(2, bc.Count, "#1"); Assert.AreEqual(typeof(WebMessageEncodingBindingElement), bc [0].GetType(), "#2"); Assert.AreEqual(typeof(HttpTransportBindingElement), bc [1].GetType(), "#3"); }
public static Binding CreateKerberosBinding() { BindingElementCollection bec = new BindingElementCollection(); bec.Add(SecurityBindingElement.CreateKerberosBindingElement()); bec.Add(new TextMessageEncodingBindingElement()); bec.Add(new HttpTransportBindingElement()); return(new CustomBinding(bec)); }
public override BindingElementCollection CreateBindingElements() { BindingElementCollection elements = new BindingElementCollection(); if (security != null) elements.Add(security); elements.Add(messageEncoding); elements.Add(transport); return elements.Clone(); }
private void AddWindowsHttpsTransportBindingElement(BindingElementCollection bindingElements) { HttpsTransportBindingElement item = new HttpsTransportBindingElement { RequireClientCertificate = false, UseDefaultWebProxy = false, AuthenticationScheme = AuthenticationSchemes.Negotiate }; bindingElements.Add(item); }
protected void AddInteropHttpsTransportBindingElement(BindingElementCollection bindingElements) { HttpsTransportBindingElement item = new HttpsTransportBindingElement { RequireClientCertificate = true, UseDefaultWebProxy = false }; bindingElements.Add(item); }
public static FNCEWS40PortTypeClient ConfigureBinding(String user, String domain, String password, String uri) { BindingElementCollection bec = new BindingElementCollection(); // Everything gets treated as if it is username credentials until // right at the point of serialization. TransportSecurityBindingElement sbe = SecurityBindingElement.CreateUserNameOverTransportBindingElement(); sbe.IncludeTimestamp = false; bec.Add(sbe); if (uri.IndexOf("SOAP") != -1) { // using the SOAP endpoint TextMessageEncodingBindingElement tme = new TextMessageEncodingBindingElement(); tme.MessageVersion = MessageVersion.Soap11; tme.ReaderQuotas.MaxDepth = 1024; tme.ReaderQuotas.MaxStringContentLength = 1024 * 1024; bec.Add(tme); } else { MtomMessageEncodingBindingElement mme = new MtomMessageEncodingBindingElement(); mme.MessageVersion = MessageVersion.Soap12; mme.ReaderQuotas.MaxDepth = 1024; mme.ReaderQuotas.MaxStringContentLength = 1024 * 1024; mme.MaxBufferSize = 2147483647; bec.Add(mme); } HttpsTransportBindingElement tbe = new HttpsTransportBindingElement(); tbe.MaxReceivedMessageSize = 2147483647; tbe.MaxBufferSize = 2147483647; bec.Add(tbe); CustomBinding binding = new CustomBinding(bec); binding.ReceiveTimeout = new TimeSpan(TimeSpan.TicksPerDay); // 100 nanonsecond units, make it 1 day binding.SendTimeout = binding.ReceiveTimeout; EndpointAddress endpoint = new EndpointAddress(uri); port = new FNCEWS40PortTypeClient(binding, endpoint); port.ClientCredentials.UserName.UserName = user; port.ClientCredentials.UserName.Password = password; // set up the Localization header, minus the locale. We assume // the timezone cannot change between calls, but that the locale // may. localization = new Localization(); localization.Timezone = GetTimezone(); return(port); }
void VerifyContextBinding() { BindingElementCollection elements = Endpoint.Binding.CreateBindingElements(); if (elements.Contains(typeof(ContextBindingElement))) { return; } throw new InvalidOperationException("Can only use a context binding with " + GetType()); }
public override BindingElementCollection CreateBindingElements() { BindingElementCollection bindingElements = new BindingElementCollection(); bindingElements.Add(sessionElement); bindingElements.Add(encodingElement); bindingElements.Add(transportElement); return(bindingElements.Clone()); }
/// <summary> /// Create the set of binding elements that make up this binding. /// NOTE: order of binding elements is important. /// </summary> /// <returns></returns> public override BindingElementCollection CreateBindingElements() { BindingElementCollection bindingElements = new BindingElementCollection(); // only two binding elements are used. bindingElements.Add(_encoding); bindingElements.Add(_transport); return(bindingElements.Clone()); }
public override BindingElementCollection CreateBindingElements() { BindingElementCollection elements = new BindingElementCollection(); elements.Add(this._trafficControlBindingElement); elements.Add(this._messageEncodingBindingElement); //elements.Add(this._symmetricSecurityBindingElement); //elements.Add(this._transactionFlowBindingElement); elements.Add(this._transportBindingElement); return elements.Clone(); }
public SimpleDatagramBinding() { BindingElement[] bindingElements = new BindingElement[] { new TextMessageEncodingBindingElement(), new HttpTransportBindingElement() }; bindingElementCollection = new BindingElementCollection(bindingElements); transportBindingElement = (TransportBindingElement)bindingElements[1]; }
public override BindingElementCollection CreateBindingElements() { var elements = new BindingElementCollection { this._encoding, this._mainTransport }; return elements; }
public override BindingElementCollection CreateBindingElements() { var elements = new BindingElementCollection { this._encoding, this._mainTransport }; return(elements); }
//The heart of the custom binding public override BindingElementCollection CreateBindingElements() { BindingElement element = new ContextBindingElement(ContextProtectionLevel, ContextExchangeMechanism.ContextSoapHeader); BindingElementCollection elements = base.CreateBindingElements(); elements.Insert(0, element); return(elements); }
public static Binding GetDefaultBinding() { var bindingElements = new BindingElementCollection {new BinaryMessageEncodingBindingElement(), GetDefaultTransport() }; var customBinding = new CustomBinding(bindingElements); #if DEBUG customBinding.ReceiveTimeout = TimeSpan.FromMinutes(60); customBinding.SendTimeout = TimeSpan.FromMinutes(60); #endif return customBinding; }
protected void AddNamedPipeBindingElement(BindingElementCollection bindingElements) { NamedPipeTransportBindingElement item = new NamedPipeTransportBindingElement { MaxPendingConnections = 50 }; item.ConnectionPoolSettings.MaxOutboundConnectionsPerEndpoint = 0x19; item.MaxPendingAccepts = 0x19; bindingElements.Add(item); }
public static Binding CreateSspiNegotiatedOverTransportBinding() { BindingElementCollection bec = new BindingElementCollection(); bec.Add(SecurityBindingElement. CreateSspiNegotiationOverTransportBindingElement()); bec.Add(new TextMessageEncodingBindingElement()); bec.Add(new HttpsTransportBindingElement()); return(new CustomBinding(bec)); }
internal Binding CreateResponseBinding() { BindingElementCollection be = originalBindingContext.Binding.CreateBindingElements(); if (be.Find <SsbBindingElement>() == null) { throw new InvalidOperationException("SsbBindingElement not found"); } return(new CustomBinding(be)); }
public override BindingElementCollection CreateBindingElements() { BindingElementCollection bindingElements = new BindingElementCollection(); bindingElements.Add(sessionElement); bindingElements.Add(encodingElement); bindingElements.Add(transportElement); return bindingElements.Clone(); }
public SimpleSessionBinding() { BindingElement[] bindingElements = new BindingElement[] { new SimpleSessionBindingElement(), new BinaryMessageEncodingBindingElement(), new TcpTransportBindingElement() }; bindingElementCollection = new BindingElementCollection(bindingElements); transportBindingElement = (TransportBindingElement)bindingElements[2]; }
public override BindingElementCollection CreateBindingElements() { BindingElementCollection elements = new BindingElementCollection(); SecurityBindingElement item = this.CreateMessageSecurity(); if (item != null) { elements.Add(item); } elements.Add(this.encoding); elements.Add(this.GetTransport()); return elements.Clone(); }
public override BindingElementCollection CreateBindingElements() { BindingElementCollection elements = new BindingElementCollection(); elements.Clear(); if ((SecurityMode.Message == this._securityMode) || (SecurityMode.TransportWithMessageCredential == this._securityMode)) { elements.Add(this.ApplyMessageSecurity(this.CreateSecurityBindingElement())); } elements.Add(this.CreateEncodingBindingElement()); elements.Add(this.CreateTransportBindingElement()); return elements.Clone(); }
public CustomBinding(IEnumerable<BindingElement> bindingElementsInTopDownChannelStackOrder) { this.bindingElements = new BindingElementCollection(); if (bindingElementsInTopDownChannelStackOrder == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("bindingElements"); } foreach (BindingElement element in bindingElementsInTopDownChannelStackOrder) { this.bindingElements.Add(element); } }
public override BindingElementCollection CreateBindingElements() { var elements = new BindingElementCollection(); elements.Add(_messageElement); if (_sessionElement != null) { elements.Add(_sessionElement); } // the transport binding element must be the last one elements.Add(_transportElement); return elements.Clone(); }
internal CustomBinding(BindingElementCollection bindingElements) { this.bindingElements = new BindingElementCollection(); if (bindingElements == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("bindingElements"); } for (int i = 0; i < bindingElements.Count; i++) { this.bindingElements.Add(bindingElements[i]); } }
static bool BindingRequiresAuthentication(BindingElementCollection elements) { SecurityBindingElement element = elements.Find<SecurityBindingElement>(); if (element != null) { foreach (SecurityTokenParameters parameters in EnumerateNestedTokenParameters(element)) { if (parameters is SspiSecurityTokenParameters) return true; } } return false; }
public BindingElementCollection Extend(BindingElementCollection bindingElementCollection) { MessageEncodingBindingElement item = bindingElementCollection.Find<MessageEncodingBindingElement>(); if (item != null) { ConfigureFromMessageEncodingBindingElement(item); int index = bindingElementCollection.IndexOf(item); bindingElementCollection.RemoveAt(index); bindingElementCollection.Insert(index, this); return bindingElementCollection; } bindingElementCollection.Insert(0, this); return bindingElementCollection; }
public override BindingElementCollection CreateBindingElements() { BindingElementCollection elements = new BindingElementCollection { this.context, this.encoding }; WindowsStreamSecurityBindingElement item = this.CreateTransportSecurity(); if (item != null) { elements.Add(item); } elements.Add(this.namedPipe); return elements.Clone(); }
/// <summary> /// Create the set of binding elements that make up this binding. /// NOTE: order of binding elements is important. /// </summary> /// <returns></returns> public override BindingElementCollection CreateBindingElements() { BindingElementCollection bindingElements = new BindingElementCollection(); if (ReliableSessionEnabled) { bindingElements.Add(session); bindingElements.Add(compositeDuplex); } bindingElements.Add(encoding); bindingElements.Add(transport); return bindingElements.Clone(); }