internal override bool IsMatch(BindingElement b) { if (!base.IsMatch(b)) { return(false); } NamedPipeTransportBindingElement namedPipe = b as NamedPipeTransportBindingElement; if (namedPipe == null) { return(false); } if (!this.ConnectionPoolSettings.IsMatch(namedPipe.ConnectionPoolSettings)) { return(false); } if (!this.PipeSettings.IsMatch(namedPipe.PipeSettings)) { return(false); } return(true); }
/// <summary> /// Initializes the binding. /// </summary> /// <param name="namespaceUris">The namespace uris.</param> /// <param name="factory">The factory.</param> /// <param name="configuration">The configuration.</param> /// <param name="description">The description.</param> public UaSoapXmlOverPipeBinding( NamespaceTable namespaceUris, EncodeableFactory factory, EndpointConfiguration configuration, EndpointDescription description) : base(namespaceUris, factory, configuration) { if (description != null && description.SecurityMode != MessageSecurityMode.None) { SymmetricSecurityBindingElement bootstrap = (SymmetricSecurityBindingElement)SecurityBindingElement.CreateMutualCertificateBindingElement(); bootstrap.MessageProtectionOrder = MessageProtectionOrder.SignBeforeEncryptAndEncryptSignature; bootstrap.DefaultAlgorithmSuite = SecurityPolicies.ToSecurityAlgorithmSuite(description.SecurityPolicyUri); bootstrap.IncludeTimestamp = true; bootstrap.MessageSecurityVersion = MessageSecurityVersion.WSSecurity11WSTrust13WSSecureConversation13WSSecurityPolicy12BasicSecurityProfile10; // bootstrap.MessageSecurityVersion = MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10; bootstrap.RequireSignatureConfirmation = false; bootstrap.SecurityHeaderLayout = SecurityHeaderLayout.Strict; m_security = (SymmetricSecurityBindingElement)SecurityBindingElement.CreateSecureConversationBindingElement(bootstrap, true); m_security.MessageProtectionOrder = MessageProtectionOrder.EncryptBeforeSign; m_security.DefaultAlgorithmSuite = SecurityPolicies.ToSecurityAlgorithmSuite(description.SecurityPolicyUri); m_security.IncludeTimestamp = true; m_security.MessageSecurityVersion = MessageSecurityVersion.WSSecurity11WSTrust13WSSecureConversation13WSSecurityPolicy12BasicSecurityProfile10; // m_security.MessageSecurityVersion = MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10; m_security.RequireSignatureConfirmation = false; m_security.SecurityHeaderLayout = SecurityHeaderLayout.Strict; m_security.SetKeyDerivation(true); } m_encoding = new BinaryMessageEncodingBindingElement(); // WCF does not distinguish between arrays and byte string. int maxArrayLength = configuration.MaxArrayLength; if (configuration.MaxArrayLength < configuration.MaxByteStringLength) { maxArrayLength = configuration.MaxByteStringLength; } m_encoding.ReaderQuotas.MaxArrayLength = maxArrayLength; m_encoding.ReaderQuotas.MaxStringContentLength = configuration.MaxStringLength; m_encoding.ReaderQuotas.MaxBytesPerRead = Int32.MaxValue; m_encoding.ReaderQuotas.MaxDepth = Int32.MaxValue; m_encoding.ReaderQuotas.MaxNameTableCharCount = Int32.MaxValue; m_transport = new System.ServiceModel.Channels.NamedPipeTransportBindingElement(); m_transport.ManualAddressing = false; m_transport.MaxBufferPoolSize = Int32.MaxValue; m_transport.MaxReceivedMessageSize = configuration.MaxMessageSize; }
protected NamedPipeTransportBindingElement(NamedPipeTransportBindingElement elementToBeCloned) : base(elementToBeCloned) { this.connectionPoolSettings = new NamedPipeConnectionPoolSettings(); if (elementToBeCloned.allowedUsers != null) { this.allowedUsers = new List <SecurityIdentifier>(elementToBeCloned.AllowedUsers.Count); foreach (SecurityIdentifier identifier in elementToBeCloned.allowedUsers) { this.allowedUsers.Add(identifier); } } this.connectionPoolSettings = elementToBeCloned.connectionPoolSettings.Clone(); }
protected NamedPipeTransportBindingElement(NamedPipeTransportBindingElement elementToBeCloned) : base(elementToBeCloned) { if (elementToBeCloned.allowedUsers != null) { foreach (SecurityIdentifier id in elementToBeCloned.allowedUsers) { this.allowedUsers.Add(id); } } this.connectionPoolSettings = elementToBeCloned.connectionPoolSettings.Clone(); this.settings = elementToBeCloned.settings.Clone(); }
private void CreateControlProxy() { EndpointAddress remoteAddress = new EndpointAddress(System.ServiceModel.Activation.Utility.FormatListenerEndpoint(this.serviceName, this.listenerEndPoint), new AddressHeader[0]); NamedPipeTransportBindingElement element = new NamedPipeTransportBindingElement(); CustomBinding binding = new CustomBinding(new BindingElement[] { element }); InstanceContext callbackInstance = new InstanceContext(null, this, false); ChannelFactory <IConnectionRegister> factory = new DuplexChannelFactory <IConnectionRegister>(callbackInstance, binding, remoteAddress); factory.Endpoint.Behaviors.Add(new SharedListenerProxyBehavior(this)); IConnectionRegister register = factory.CreateChannel(); this.channelFactory = factory; this.controlSessionWithListener = register as IDuplexContextChannel; }
public NamedPipeChannelFactory(NamedPipeTransportBindingElement source, BindingContext ctx) { foreach (BindingElement be in ctx.RemainingBindingElements) { MessageEncodingBindingElement mbe = be as MessageEncodingBindingElement; if (mbe != null) { encoder = CreateEncoder <TChannel> (mbe); quotas = mbe.GetProperty <XmlDictionaryReaderQuotas> (ctx); break; } } if (encoder == null) { encoder = new BinaryMessageEncoder(); } this.source = source; }
static TransportBindingElement CreateTransportBindingElements(string transportUri, PolicyConversionContext policyContext) { TransportBindingElement transportBindingElement = null; // Try and Create TransportBindingElement switch (transportUri) { case TransportPolicyConstants.HttpTransportUri: transportBindingElement = GetHttpTransportBindingElement(policyContext); break; case TransportPolicyConstants.TcpTransportUri: transportBindingElement = new TcpTransportBindingElement(); break; case TransportPolicyConstants.NamedPipeTransportUri: transportBindingElement = new NamedPipeTransportBindingElement(); break; case TransportPolicyConstants.MsmqTransportUri: transportBindingElement = new MsmqTransportBindingElement(); break; case TransportPolicyConstants.PeerTransportUri: #pragma warning disable 0618 transportBindingElement = new PeerTransportBindingElement(); #pragma warning restore 0618 break; case TransportPolicyConstants.WebSocketTransportUri: HttpTransportBindingElement httpTransport = GetHttpTransportBindingElement(policyContext); httpTransport.WebSocketSettings.TransportUsage = WebSocketTransportUsage.Always; httpTransport.WebSocketSettings.SubProtocol = WebSocketTransportSettings.SoapSubProtocol; transportBindingElement = httpTransport; break; default: // There may be another registered converter that can handle this transport. break; } return(transportBindingElement); }
public NamedPipeChannelListener(NamedPipeTransportBindingElement source, BindingContext context) : base(context) { foreach (BindingElement be in context.Binding.Elements) { MessageEncodingBindingElement mbe = be as MessageEncodingBindingElement; if (mbe != null) { MessageEncoder = CreateEncoder <TChannel> (mbe); quotas = mbe.GetProperty <XmlDictionaryReaderQuotas> (context); break; } } if (MessageEncoder == null) { MessageEncoder = new BinaryMessageEncoder(); } }
protected NamedPipeTransportBindingElement( NamedPipeTransportBindingElement elementToBeCloned) : base(elementToBeCloned) { pool.CopyPropertiesFrom(elementToBeCloned.pool); }
protected NamedPipeTransportBindingElement( NamedPipeTransportBindingElement other) : base(other) { pool.CopyPropertiesFrom(other.pool); }
protected NamedPipeTransportBindingElement(NamedPipeTransportBindingElement elementToBeCloned) : base(elementToBeCloned) { _settings = elementToBeCloned._settings.Clone(); }
protected NamedPipeChannelListener(NamedPipeTransportBindingElement bindingElement, BindingContext context) : base(bindingElement, context) { base.SetIdleTimeout(bindingElement.ConnectionPoolSettings.IdleTimeout); base.SetMaxPooledConnections(bindingElement.ConnectionPoolSettings.MaxOutboundConnectionsPerEndpoint); }
protected NamedPipeChannelListener(NamedPipeTransportBindingElement bindingElement, BindingContext context) : base(bindingElement, context) { }
public NamedPipeDuplexChannelListener(NamedPipeTransportBindingElement bindingElement, BindingContext context) : base(bindingElement, context) { this.duplexAcceptor = new InputQueueChannelAcceptor <IDuplexSessionChannel>(this); }
public NamedPipeReplyChannelListener(NamedPipeTransportBindingElement bindingElement, BindingContext context) : base(bindingElement, context) { this.replyAcceptor = new ConnectionOrientedTransportChannelListener.ConnectionOrientedTransportReplyChannelAcceptor(this); }
public NamedPipeChannelFactory(NamedPipeTransportBindingElement bindingElement, BindingContext context) : base(bindingElement, context, bindingElement.ConnectionPoolSettings.GroupName, bindingElement.ConnectionPoolSettings.IdleTimeout, bindingElement.ConnectionPoolSettings.MaxOutboundConnectionsPerEndpoint, false) { }