internal virtual void InitializeFrom(HttpTransportBindingElement transport, MessageEncodingBindingElement encoding) { this.BypassProxyOnLocal = transport.BypassProxyOnLocal; this.HostNameComparisonMode = transport.HostNameComparisonMode; this.MaxBufferPoolSize = transport.MaxBufferPoolSize; this.MaxBufferSize = transport.MaxBufferSize; this.MaxReceivedMessageSize = transport.MaxReceivedMessageSize; this.ProxyAddress = transport.ProxyAddress; this.TransferMode = transport.TransferMode; this.UseDefaultWebProxy = transport.UseDefaultWebProxy; this.httpTransport.WebSocketSettings = transport.WebSocketSettings; this.httpsTransport.WebSocketSettings = transport.WebSocketSettings; if (encoding is TextMessageEncodingBindingElement) { TextMessageEncodingBindingElement text = (TextMessageEncodingBindingElement)encoding; this.TextEncoding = text.WriteEncoding; this.ReaderQuotas = text.ReaderQuotas; } else if (encoding is MtomMessageEncodingBindingElement) { MtomMessageEncodingBindingElement mtom = (MtomMessageEncodingBindingElement)encoding; this.TextEncoding = mtom.WriteEncoding; this.ReaderQuotas = mtom.ReaderQuotas; } this.BasicHttpSecurity.Transport.ExtendedProtectionPolicy = transport.ExtendedProtectionPolicy; }
protected ServiceBusChannelListener(BindingContext context, NetMessagingTransportBindingElement transport) : base(context.Binding) { this.listenUri = context.ListenUriBaseAddress; if (!string.IsNullOrEmpty(context.ListenUriRelativeAddress)) { this.listenUri = new System.Uri(context.ListenUriBaseAddress, context.ListenUriRelativeAddress); } this.MaxBufferSize = (int)Math.Min(transport.MaxReceivedMessageSize, (long)2147483647); this.ReceiveContextEnabled = transport.ReceiveContextEnabled; MessageEncodingBindingElement messageEncodingBindingElement = context.BindingParameters.Find <MessageEncodingBindingElement>(); if (messageEncodingBindingElement == null) { messageEncodingBindingElement = Microsoft.ServiceBus.Messaging.Channels.TransportDefaults.CreateDefaultEncoder(); } this.MessageEncoderFactory = messageEncodingBindingElement.CreateMessageEncoderFactory(); this.MessagingFactorySettings = transport.CreateMessagingFactorySettings(context); this.MessagingAddress = new Microsoft.ServiceBus.Messaging.MessagingAddress(this.Uri, this.MessagingFactorySettings.NetMessagingTransportSettings.GatewayMode); if (this.MessagingAddress.Type != MessagingAddressType.Entity) { throw Microsoft.ServiceBus.Messaging.FxTrace.Exception.Argument("ListenUriBaseAddress", SRClient.EntityNameNotFound(this.MessagingAddress.ToString())); } this.TransportBindingElement = transport; this.PrefetchCount = transport.PrefetchCount; }
public override IChannelListener <TChannel> BuildChannelListener <TChannel>(BindingContext context) where TChannel : class, IChannel { if (typeof(TChannel) != typeof(IReplyChannel)) { ExceptionUtility exceptionUtility = Microsoft.ServiceBus.Diagnostics.DiagnosticUtility.ExceptionUtility; string channelTypeNotSupported = Resources.ChannelTypeNotSupported; object[] objArray = new object[] { typeof(TChannel) }; throw exceptionUtility.ThrowHelperArgument("TChannel", Microsoft.ServiceBus.SR.GetString(channelTypeNotSupported, objArray)); } NameSettings nameSetting = context.BindingParameters.Find <NameSettings>(); if (nameSetting == null) { nameSetting = new NameSettings(); context.BindingParameters.Add(nameSetting); } nameSetting.ServiceSettings.ListenerType = ListenerType.RelayedHttp; nameSetting.ServiceSettings.TransportProtection = (this is HttpsRelayTransportBindingElement ? RelayTransportProtectionMode.EndToEnd : RelayTransportProtectionMode.None); nameSetting.ServiceSettings.RelayClientAuthenticationType = this.relayClientAuthenticationType; nameSetting.ServiceSettings.IsDynamic = this.IsDynamic; MessageEncodingBindingElement messageEncodingBindingElement = context.BindingParameters.Find <MessageEncodingBindingElement>(); BindingContext bindingContext = this.CreateInnerListenerBindingContext(context); if (messageEncodingBindingElement != null) { context.BindingParameters.Remove <MessageEncodingBindingElement>(); } return((IChannelListener <TChannel>)(new RelayHttpTransportChannelListener(context, messageEncodingBindingElement, bindingContext.BuildInnerChannelListener <IReplyChannel>()))); }
/// <summary> /// Constructor. /// </summary> /// <param name="uri">The transport endpoint address URI (or <c>null</c>).</param> public LillTekBinding(Uri uri) { if (uri == null) { uri = ServiceModelHelper.CreateUniqueUri(); } switch (uri.Scheme.ToLowerInvariant()) { case "lilltek.logical": transport = new LogicalTransportBindingElement(); break; case "lilltek.abstract": transport = new AbstractTransportBindingElement(); break; default: throw new ArgumentException(string.Format("Invalid LillTek Transport scheme [{0}].", uri.Scheme), "uri"); } encoding = new BinaryMessageEncodingBindingElement(); }
private bool hostStarted; // Indicates whether call to ChannelHost.Start() is current //--------------------------------------------------------------------- // Implementation /// <summary> /// Constructor. /// </summary> /// <param name="context">The <see cref="BindingContext" /> holding the information necessary to construct the channel stack.</param> /// <exception cref="InvalidOperationException">Thrown if problems were found with the binding parameters.</exception> internal LillTekChannelListener(BindingContext context) { this.maxAcceptedChannels = ServiceModelHelper.MaxAcceptedChannels; // $todo(jeff.lill): Hardcoded bkTaskInterval = ServiceModelHelper.DefaultBkTaskInterval; // This too this.context = context; this.uri = GetListenUri(context); this.ep = ServiceModelHelper.ToMsgEP(uri); this.onBkTask = new AsyncCallback(OnBkTask); this.sessionMode = false; this.hostStarted = false; // Initialize the message encoder factory from the binding context if // one was specified. Use the binary message encoding factory otherwise. if (context.BindingParameters.FindAll <MessageEncodingBindingElement>().Count > 1) { throw new InvalidOperationException("Multiple MessageEncodingBindingElements were found in the BindingParameters of the BindingContext."); } MessageEncodingBindingElement element = context.BindingParameters.Find <MessageEncodingBindingElement>(); if (element != null) { messageEncoderFactory = element.CreateMessageEncoderFactory(); } else { messageEncoderFactory = new BinaryMessageEncodingBindingElement().CreateMessageEncoderFactory(); } }
public RelayHttpTransportChannelListener(BindingContext context, MessageEncodingBindingElement encodingBindingElement, IChannelListener <IReplyChannel> innerChannelListener) : base(context.Binding, innerChannelListener) { this.innerChannelListener = innerChannelListener; this.listenUri = this.innerChannelListener.Uri; this.encoder = encodingBindingElement.CreateMessageEncoderFactory().Encoder; this.preserveRawHttp = context.BindingParameters.Find <NameSettings>().ServiceSettings.PreserveRawHttp; }
private void InitializeFrom(HttpTransportBindingElement transport, MessageEncodingBindingElement encoding, System.ServiceModel.Channels.TransactionFlowBindingElement txFlow, System.ServiceModel.Channels.ReliableSessionBindingElement session) { this.BypassProxyOnLocal = transport.BypassProxyOnLocal; this.HostNameComparisonMode = transport.HostNameComparisonMode; this.MaxBufferPoolSize = transport.MaxBufferPoolSize; this.MaxReceivedMessageSize = transport.MaxReceivedMessageSize; this.ProxyAddress = transport.ProxyAddress; this.UseDefaultWebProxy = transport.UseDefaultWebProxy; if (encoding is TextMessageEncodingBindingElement) { this.MessageEncoding = WSMessageEncoding.Text; TextMessageEncodingBindingElement element = (TextMessageEncodingBindingElement)encoding; this.TextEncoding = element.WriteEncoding; this.ReaderQuotas = element.ReaderQuotas; } else if (encoding is MtomMessageEncodingBindingElement) { this.messageEncoding = WSMessageEncoding.Mtom; MtomMessageEncodingBindingElement element2 = (MtomMessageEncodingBindingElement)encoding; this.TextEncoding = element2.WriteEncoding; this.ReaderQuotas = element2.ReaderQuotas; } this.TransactionFlow = txFlow.Transactions; this.reliableSession.Enabled = session != null; if (session != null) { this.session.InactivityTimeout = session.InactivityTimeout; this.session.Ordered = session.Ordered; } }
private void InitializeFrom(HttpRelayTransportBindingElement transport, MessageEncodingBindingElement encoding, System.ServiceModel.Channels.ReliableSessionBindingElement session) { this.MaxBufferPoolSize = transport.MaxBufferPoolSize; this.MaxReceivedMessageSize = transport.MaxReceivedMessageSize; this.ProxyAddress = transport.ProxyAddress; this.UseDefaultWebProxy = transport.UseDefaultWebProxy; if (encoding is TextMessageEncodingBindingElement) { this.MessageEncoding = WSMessageEncoding.Text; TextMessageEncodingBindingElement textMessageEncodingBindingElement = (TextMessageEncodingBindingElement)encoding; this.TextEncoding = textMessageEncodingBindingElement.WriteEncoding; this.ReaderQuotas = textMessageEncodingBindingElement.ReaderQuotas; } else if (encoding is MtomMessageEncodingBindingElement) { this.messageEncoding = WSMessageEncoding.Mtom; MtomMessageEncodingBindingElement mtomMessageEncodingBindingElement = (MtomMessageEncodingBindingElement)encoding; this.TextEncoding = mtomMessageEncodingBindingElement.WriteEncoding; this.ReaderQuotas = mtomMessageEncodingBindingElement.ReaderQuotas; } this.reliableSession.Enabled = session != null; if (session != null) { this.session.InactivityTimeout = session.InactivityTimeout; this.session.Ordered = session.Ordered; } }
public void ExportEndpoint(WsdlExporter exporter, WsdlEndpointConversionContext context) { BindingElementCollection bindingElements = context.Endpoint.Binding.CreateBindingElements(); MessageEncodingBindingElement encodingBindingElement = bindingElements.Find <MessageEncodingBindingElement>(); if (encodingBindingElement == null) { encodingBindingElement = new TextMessageEncodingBindingElement(); } // Set SoapBinding Transport URI if (UdpPolicyStrings.UdpNamespace != null) { WsdlNS.SoapBinding soapBinding = GetSoapBinding(context, exporter); if (soapBinding != null) { soapBinding.Transport = UdpPolicyStrings.UdpNamespace; } } if (context.WsdlPort != null) { AddAddressToWsdlPort(context.WsdlPort, context.Endpoint.Address, encodingBindingElement.MessageVersion.Addressing); } }
public CryptEncodingBindingElement(MessageEncodingBindingElement innerMessageEncodingBindingElement, string key, string iv) { this.readerQuotas = new XmlDictionaryReaderQuotas(); this.key = key; this.iv = iv; this.innerMessageEncodingBindingElement = innerMessageEncodingBindingElement; }
void InitializeFrom(HttpTransportBindingElement transport, MessageEncodingBindingElement encoding, ReliableSessionBindingElement session) { this.InitializeFrom(transport, encoding); if (encoding is BinaryMessageEncodingBindingElement) { this.messageEncoding = NetHttpMessageEncoding.Binary; BinaryMessageEncodingBindingElement binary = (BinaryMessageEncodingBindingElement)encoding; this.ReaderQuotas = binary.ReaderQuotas; } if (encoding is TextMessageEncodingBindingElement) { this.messageEncoding = NetHttpMessageEncoding.Text; } else if (encoding is MtomMessageEncodingBindingElement) { this.messageEncoding = NetHttpMessageEncoding.Mtom; } if (session != null) { // only set properties that have standard binding manifestations this.session.InactivityTimeout = session.InactivityTimeout; this.session.Ordered = session.Ordered; } }
private void InitializeFrom(HttpTransportBindingElement transport, MessageEncodingBindingElement encoding, TransactionFlowBindingElement txFlow, ReliableSessionBindingElement session) { this.HostNameComparisonMode = transport.HostNameComparisonMode; this.MaxBufferPoolSize = transport.MaxBufferPoolSize; this.MaxReceivedMessageSize = transport.MaxReceivedMessageSize; // this binding only supports Text and Mtom encoding if (encoding is TextMessageEncodingBindingElement) { this.MessageEncoding = WSMessageEncoding.Text; TextMessageEncodingBindingElement text = (TextMessageEncodingBindingElement)encoding; this.TextEncoding = text.WriteEncoding; this.ReaderQuotas = text.ReaderQuotas; } else if (encoding is MtomMessageEncodingBindingElement) { _messageEncoding = WSMessageEncoding.Mtom; MtomMessageEncodingBindingElement mtom = (MtomMessageEncodingBindingElement)encoding; this.TextEncoding = mtom.WriteEncoding; this.ReaderQuotas = mtom.ReaderQuotas; } this.TransactionFlow = txFlow.Transactions; _reliableSession.Enabled = session != null; //session if (session != null) { // only set properties that have standard binding manifestations _session.InactivityTimeout = session.InactivityTimeout; _session.Ordered = session.Ordered; } }
private bool IsBindingElementsMatch(HttpTransportBindingElement transport, MessageEncodingBindingElement encoding) { switch (this.MessageEncoding) { case NetHttpMessageEncoding.Text: if (!this.TextMessageEncodingBindingElement.IsMatch(encoding)) { return(false); } break; case NetHttpMessageEncoding.Mtom: return(false); default: // NetHttpMessageEncoding.Binary if (!_binaryMessageEncodingBindingElement.IsMatch(encoding)) { return(false); } break; } if (!this.GetTransport().IsMatch(transport)) { return(false); } return(true); }
private bool IsBindingElementsMatch(HttpTransportBindingElement transport, MessageEncodingBindingElement encoding, System.ServiceModel.Channels.TransactionFlowBindingElement txFlow, System.ServiceModel.Channels.ReliableSessionBindingElement session) { if (!this.GetTransport().IsMatch(transport)) { return(false); } if (this.MessageEncoding == WSMessageEncoding.Text) { if (!this.textEncoding.IsMatch(encoding)) { return(false); } } else if ((this.MessageEncoding == WSMessageEncoding.Mtom) && !this.mtomEncoding.IsMatch(encoding)) { return(false); } if (!this.txFlow.IsMatch(txFlow)) { return(false); } if (this.reliableSession.Enabled) { if (!this.session.IsMatch(session)) { return(false); } } else if (session != null) { return(false); } return(true); }
void Initialize() { transport = new UdpTransportBindingElement(); session = new ReliableSessionBindingElement(); compositeDuplex = new CompositeDuplexBindingElement(); encoding = new TextMessageEncodingBindingElement(); }
private bool IsBindingElementsMatch(HttpTransportBindingElement transport, MessageEncodingBindingElement encoding, TransactionFlowBindingElement txFlow, ReliableSessionBindingElement session, CompositeDuplexBindingElement compositeDuplex, OneWayBindingElement oneWay) { if (!this.httpTransport.IsMatch(transport)) { return(false); } if (this.MessageEncoding == WSMessageEncoding.Text) { if (!this.textEncoding.IsMatch(encoding)) { return(false); } } else if ((this.MessageEncoding == WSMessageEncoding.Mtom) && !this.mtomEncoding.IsMatch(encoding)) { return(false); } if (!this.txFlow.IsMatch(txFlow)) { return(false); } if (!this.session.IsMatch(session)) { return(false); } if (!this.compositeDuplex.IsMatch(compositeDuplex)) { return(false); } if (!this.oneWay.IsMatch(oneWay)) { return(false); } return(true); }
public HttpChannelListener(HttpTransportBindingElement source, BindingContext context) : base(context) { this.Source = source; if (Uri != null && source.Scheme != Uri.Scheme) { throw new ArgumentException(String.Format("Requested listen uri scheme must be {0}, but was {1}.", source.Scheme, Uri.Scheme)); } foreach (BindingElement be in context.Binding.Elements) { MessageEncodingBindingElement mbe = be as MessageEncodingBindingElement; if (mbe != null) { MessageEncoder = CreateEncoder <TChannel>(mbe); break; } } if (MessageEncoder == null) { MessageEncoder = new TextMessageEncoder(MessageVersion.Default, Encoding.UTF8); } if (context.BindingParameters.Contains(typeof(ServiceCredentials))) { SecurityTokenManager = new ServiceCredentialsSecurityTokenManager((ServiceCredentials)context.BindingParameters[typeof(ServiceCredentials)]); } }
void BasicHttpBindingSecurityModeTransportPropertiesPropagated() { int expectedMaxBufferSize = 7654321; int expectedMaxReceivedMessageSize = 87654321; string expectedScheme = "https"; BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport); // Check the default values are as expected Assert.Equal(TransferMode.Buffered, binding.TransferMode); Assert.Equal(MessageVersion.Soap11, binding.MessageVersion); Assert.Equal(65536, binding.MaxReceivedMessageSize); Assert.Equal(65536, binding.MaxBufferSize); Assert.Equal(expectedScheme, binding.Scheme); binding.MaxBufferSize = expectedMaxBufferSize; binding.MaxReceivedMessageSize = expectedMaxReceivedMessageSize; binding.TransferMode = TransferMode.Streamed; BindingElementCollection bindingElements = binding.CreateBindingElements(); HttpTransportBindingElement htbe = bindingElements.Find <HttpTransportBindingElement>(); Assert.Equal("CoreWCF.Channels.HttpsTransportBindingElement", htbe.GetType().FullName); Assert.Equal(expectedMaxBufferSize, htbe.MaxBufferSize); Assert.Equal(expectedMaxReceivedMessageSize, htbe.MaxReceivedMessageSize); Assert.Equal(expectedScheme, htbe.Scheme); Assert.Equal(TransferMode.Streamed, htbe.TransferMode); MessageEncodingBindingElement mebe = bindingElements.Find <MessageEncodingBindingElement>(); Assert.Equal("CoreWCF.Channels.TextMessageEncodingBindingElement", mebe.GetType().FullName); Assert.Equal(MessageVersion.Soap11, mebe.MessageVersion); }
/// <summary> /// Implement to include for exporting a custom policy assertion about bindings. /// </summary> /// <param name="exporter">The <see cref="T:System.ServiceModel.Description.MetadataExporter" /> that you can use to modify the exporting process.</param> /// <param name="context">The <see cref="T:System.ServiceModel.Description.PolicyConversionContext" /> that you can use to insert your custom policy assertion.</param> public void ExportPolicy(MetadataExporter exporter, PolicyConversionContext context) { if (exporter == null) { throw new ArgumentNullException("exporter"); } if (context == null) { throw new ArgumentNullException("context"); } bool createdNew = false; MessageEncodingBindingElement encodingBindingElement = context.BindingElements.Find <MessageEncodingBindingElement>(); if (encodingBindingElement == null) { createdNew = true; encodingBindingElement = new TextMessageEncodingBindingElement(); } if (createdNew && encodingBindingElement is IPolicyExportExtension) { ((IPolicyExportExtension)encodingBindingElement).ExportPolicy(exporter, context); } AddWSAddressingAssertion(context, encodingBindingElement.MessageVersion.Addressing); }
public CryptEncoderFactory(MessageEncodingBindingElement innerMessageEncodingBindingElement, string key, string iv) { this.innerMessageEncodingBindingElement = innerMessageEncodingBindingElement; this.key = key; this.iv = iv; messageEncoder = new CryptEncoder(this, key, iv, CompressAlgorithm.Deflate); }
void IPolicyExportExtension.ExportPolicy(MetadataExporter exporter, PolicyConversionContext context) { if (exporter == null) { throw new ArgumentNullException("exporter"); } if (context == null) { throw new ArgumentNullException("context"); } ICollection <XmlElement> bindingAssertions = context.GetBindingAssertions(); XmlDocument xmlDocument = new XmlDocument(); bindingAssertions.Add(xmlDocument.CreateElement( SsbConstants.SsbNsPrefix, SsbConstants.SsbTransportAssertion, SsbConstants.SsbNs)); bool createdNew = false; MessageEncodingBindingElement encodingBindingElement = context.BindingElements.Find <MessageEncodingBindingElement>(); if (encodingBindingElement == null) { createdNew = true; encodingBindingElement = SsbConstants.DefaultMessageEncodingBindingElement; } if (createdNew && encodingBindingElement is IPolicyExportExtension) { ((IPolicyExportExtension)encodingBindingElement).ExportPolicy(exporter, context); } AddWSAddressingAssertion(context, encodingBindingElement.MessageVersion.Addressing); }
private void InitializeFrom(HttpTransportBindingElement transport, MessageEncodingBindingElement encoding) { this.BypassProxyOnLocal = transport.BypassProxyOnLocal; this.HostNameComparisonMode = transport.HostNameComparisonMode; this.MaxBufferPoolSize = transport.MaxBufferPoolSize; this.MaxBufferSize = transport.MaxBufferSize; this.MaxReceivedMessageSize = transport.MaxReceivedMessageSize; this.ProxyAddress = transport.ProxyAddress; this.TransferMode = transport.TransferMode; this.UseDefaultWebProxy = transport.UseDefaultWebProxy; this.Security.Transport.ExtendedProtectionPolicy = transport.ExtendedProtectionPolicy; if (encoding is TextMessageEncodingBindingElement) { this.MessageEncoding = WSMessageEncoding.Text; TextMessageEncodingBindingElement element = (TextMessageEncodingBindingElement)encoding; this.TextEncoding = element.WriteEncoding; this.ReaderQuotas = element.ReaderQuotas; } else if (encoding is MtomMessageEncodingBindingElement) { this.messageEncoding = WSMessageEncoding.Mtom; MtomMessageEncodingBindingElement element2 = (MtomMessageEncodingBindingElement)encoding; this.TextEncoding = element2.WriteEncoding; this.ReaderQuotas = element2.ReaderQuotas; } }
public void AddBindingParameters(ServiceEndpoint endpoint, BindingParameterCollection parameters) { // get Contract info security needs, and put in BindingParameterCollection ISecurityCapabilities isc = null; BindingElementCollection elements = endpoint.Binding.CreateBindingElements(); if (isc != null) { // ensure existence of binding parameter ChannelProtectionRequirements requirements = parameters.Find <ChannelProtectionRequirements>(); if (requirements == null) { requirements = new ChannelProtectionRequirements(); parameters.Add(requirements); } MessageEncodingBindingElement encoding = elements.Find <MessageEncodingBindingElement>(); // use endpoint.Binding.Version if (encoding != null && encoding.MessageVersion.Addressing == AddressingVersion.None) { // This binding does not support response actions, so... requirements.Add(ChannelProtectionRequirements.CreateFromContractAndUnionResponseProtectionRequirements(endpoint.Contract, isc, _isForClient)); } else { requirements.Add(ChannelProtectionRequirements.CreateFromContract(endpoint.Contract, isc, _isForClient)); } } }
private bool hostStarted; // Indicates whether call to ChannelHost.Start() is current /// <summary> /// Constructor. /// </summary> /// <param name="context">The <see cref="BindingContext" />.</param> /// <exception cref="InvalidOperationException">Thrown if problems were found with the binding parameters.</exception> public LillTekChannelFactory(BindingContext context) : base() { this.channels = new Dictionary <string, TInternal>(); this.hostStarted = false; // Initialize the message encoder factory from the binding context if // one was specified. Use the binary message encoding factory otherwise. if (context.BindingParameters.FindAll <MessageEncodingBindingElement>().Count > 1) { throw new InvalidOperationException("Multiple MessageEncodingBindingElements were found in the BindingParameters of the BindingContext."); } MessageEncodingBindingElement element = context.BindingParameters.Find <MessageEncodingBindingElement>(); if (element != null) { messageEncoderFactory = element.CreateMessageEncoderFactory(); } else { messageEncoderFactory = new BinaryMessageEncodingBindingElement().CreateMessageEncoderFactory(); } }
/// <summary> /// Default constructor. /// Creates encoding and transport binding elements. /// </summary> public SerialTransportBinding(string port) { //this.messageElement = new TextMessageEncodingBindingElement(); this.messageElement = new SerialEncoderBindingElement(); this.transportElement = new SerialTransportBindingElement(); this.transportElement.FactoryPort = port; }
private void initialize() { _ReliableSessionBindingElement = new ReliableSessionBindingElement(); _CompositeDuplexBindingElement = new CompositeDuplexBindingElement(); _EncodingBindingElement = new TextMessageEncodingBindingElement(); _OneWayEncodingBindingElement = new OneWayEncoderBindingElement(); _TransportBindingElement = new ExUdpBindingElement(); }
internal override void InitializeFrom(HttpTransportBindingElement transport, MessageEncodingBindingElement encoding) { base.InitializeFrom(transport, encoding); // BasicHttpBinding only supports Text and Mtom encoding if (encoding is TextMessageEncodingBindingElement) { this.MessageEncoding = WSMessageEncoding.Text; } }
public override BindingElementCollection CreateBindingElements() { BindingElementCollection elements = base.CreateBindingElements(); MessageEncodingBindingElement encodingElement = elements.Find <MessageEncodingBindingElement>(); encodingElement.MessageVersion = MessageVersion.Soap12WSAddressingAugust2004; return(elements); }
/// <summary> /// Writes custom Web Services Description Language (WSDL) elements into the generated WSDL for an endpoint. /// </summary> /// <param name="exporter">The <see cref="T:System.ServiceModel.Description.WsdlExporter" /> that exports the endpoint information.</param> /// <param name="context">Provides mappings from exported WSDL elements to the endpoint description.</param> public void ExportEndpoint(WsdlExporter exporter, WsdlEndpointConversionContext context) { BindingElementCollection bindingElements = context.Endpoint.Binding.CreateBindingElements(); MessageEncodingBindingElement encodingBindingElement = bindingElements.Find <MessageEncodingBindingElement>() ?? new TextMessageEncodingBindingElement(); if (context.WsdlPort != null) { AddAddressToWsdlPort(context.WsdlPort, context.Endpoint.Address, encodingBindingElement.MessageVersion.Addressing); } }
/// <summary> /// Creates a BindingElement instance /// </summary> /// <param name="transport">The trasport of this binding element.</param> /// <param name="extraBindings">The other elements for ths binding.</param> protected Binding(TransportBindingElement transport, params BindingElement[] extraBindings) { this.Transport = transport; BindingElement prev = null; if (extraBindings != null) { int len = extraBindings.Length; if (len > 0) { prev = null; for (int i = len - 1; i >= 0; i--) { BindingElement next = extraBindings[i]; if (prev == null) { this.Elements = next; } else { prev.SetNext(next); } prev = next; if (next is MessageEncodingBindingElement) { this.Encoding = (MessageEncodingBindingElement)next; } } } } if (prev == null) { this.Encoding = new TextMessageEncodingBindingElement(); this.Elements = this.Encoding; this.Elements.SetNext(this.Transport); } else if (this.Encoding == null) { this.Encoding = new TextMessageEncodingBindingElement(); prev.SetNext(this.Encoding); this.Encoding.SetNext(this.Transport); } else { prev.SetNext(this.Transport); } }
/// <summary> /// Creates a BindingElement instance /// </summary> /// <param name="transport">The trasport of this binding element.</param> /// <param name="extraBindings">The other elements for ths binding.</param> protected Binding( TransportBindingElement transport, params BindingElement[] extraBindings ) { this.Transport = transport; BindingElement prev = null; if(extraBindings != null) { int len = extraBindings.Length; if(len > 0) { prev = null; for(int i=len-1; i>=0; i--) { BindingElement next = extraBindings[i]; if (prev == null) { this.Elements = next; } else { prev.SetNext(next); } prev = next; if(next is MessageEncodingBindingElement) { this.Encoding = (MessageEncodingBindingElement)next; } } } } if (prev == null) { this.Encoding = new TextMessageEncodingBindingElement(); this.Elements = this.Encoding; this.Elements.SetNext(this.Transport); } else if(this.Encoding == null) { this.Encoding = new TextMessageEncodingBindingElement(); prev.SetNext(this.Encoding); this.Encoding.SetNext(this.Transport); } else { prev.SetNext(this.Transport); } }