protected TransportChannelFactory(TransportBindingElement bindingElement, BindingContext context, System.ServiceModel.Channels.MessageEncoderFactory defaultMessageEncoderFactory) : base(context.Binding) { this.manualAddressing = bindingElement.ManualAddressing; this.maxBufferPoolSize = bindingElement.MaxBufferPoolSize; this.maxReceivedMessageSize = bindingElement.MaxReceivedMessageSize; Collection <MessageEncodingBindingElement> collection = context.BindingParameters.FindAll <MessageEncodingBindingElement>(); if (collection.Count > 1) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(System.ServiceModel.SR.GetString("MultipleMebesInParameters"))); } if (collection.Count == 1) { this.messageEncoderFactory = collection[0].CreateMessageEncoderFactory(); context.BindingParameters.Remove <MessageEncodingBindingElement>(); } else { this.messageEncoderFactory = defaultMessageEncoderFactory; } if (this.messageEncoderFactory != null) { this.messageVersion = this.messageEncoderFactory.MessageVersion; } else { this.messageVersion = System.ServiceModel.Channels.MessageVersion.None; } }
private static System.ServiceModel.Channels.Message DeserialzieMessageFromStream(MemoryStream ms, System.ServiceModel.Channels.MessageVersion messageVersion) { var bmebe = new System.ServiceModel.Channels.BinaryMessageEncodingBindingElement { MessageVersion = messageVersion, ReaderQuotas = XmlDictionaryReaderQuotas.Max }; System.ServiceModel.Channels.MessageEncoderFactory bmef = bmebe.CreateMessageEncoderFactory(); return(bmef.Encoder.ReadMessage(ms, int.MaxValue)); }
private static MemoryStream SerializeMessageToStream(System.ServiceModel.Channels.Message requestMessage) { var bmebe = new System.ServiceModel.Channels.BinaryMessageEncodingBindingElement { MessageVersion = requestMessage.Version, ReaderQuotas = XmlDictionaryReaderQuotas.Max }; System.ServiceModel.Channels.MessageEncoderFactory bmef = bmebe.CreateMessageEncoderFactory(); var ms = new MemoryStream(64 * 1024); // 64K to keep out of LOH bmef.Encoder.WriteMessage(requestMessage, ms); ms.Position = 0; return(ms); }
protected TransportChannelListener(TransportBindingElement bindingElement, BindingContext context, System.ServiceModel.Channels.MessageEncoderFactory defaultMessageEncoderFactory, HostNameComparisonMode hostNameComparisonMode) : base(context.Binding) { HostNameComparisonModeHelper.Validate(hostNameComparisonMode); this.hostNameComparisonMode = hostNameComparisonMode; this.manualAddressing = bindingElement.ManualAddressing; this.maxBufferPoolSize = bindingElement.MaxBufferPoolSize; this.maxReceivedMessageSize = bindingElement.MaxReceivedMessageSize; Collection <MessageEncodingBindingElement> collection = context.BindingParameters.FindAll <MessageEncodingBindingElement>(); if (collection.Count > 1) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(System.ServiceModel.SR.GetString("MultipleMebesInParameters"))); } if (collection.Count == 1) { this.messageEncoderFactory = collection[0].CreateMessageEncoderFactory(); context.BindingParameters.Remove <MessageEncodingBindingElement>(); } else { this.messageEncoderFactory = defaultMessageEncoderFactory; } if (this.messageEncoderFactory != null) { this.messageVersion = this.messageEncoderFactory.MessageVersion; } else { this.messageVersion = System.ServiceModel.Channels.MessageVersion.None; } ServiceSecurityAuditBehavior behavior = context.BindingParameters.Find <ServiceSecurityAuditBehavior>(); if (behavior != null) { this.auditBehavior = behavior.Clone(); } else { this.auditBehavior = new ServiceSecurityAuditBehavior(); } if ((context.ListenUriMode == ListenUriMode.Unique) && (context.ListenUriBaseAddress == null)) { UriBuilder builder = new UriBuilder(this.Scheme, DnsCache.MachineName) { Path = this.GeneratedAddressPrefix }; context.ListenUriBaseAddress = builder.Uri; } UriSchemeKeyedCollection.ValidateBaseAddress(context.ListenUriBaseAddress, "baseAddress"); if ((context.ListenUriBaseAddress.Scheme != this.Scheme) && (string.Compare(context.ListenUriBaseAddress.Scheme, this.Scheme, StringComparison.OrdinalIgnoreCase) != 0)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument("context.ListenUriBaseAddress", System.ServiceModel.SR.GetString("InvalidUriScheme", new object[] { context.ListenUriBaseAddress.Scheme, this.Scheme })); } if (context.ListenUriMode == ListenUriMode.Explicit) { this.SetUri(context.ListenUriBaseAddress, context.ListenUriRelativeAddress); } else { string listenUriRelativeAddress = context.ListenUriRelativeAddress; if ((listenUriRelativeAddress.Length > 0) && !listenUriRelativeAddress.EndsWith("/", StringComparison.Ordinal)) { listenUriRelativeAddress = listenUriRelativeAddress + "/"; } this.SetUri(context.ListenUriBaseAddress, listenUriRelativeAddress + Guid.NewGuid().ToString()); } this.transportManagerContainer = new TransportManagerContainer(this); }
protected TransportChannelListener(TransportBindingElement bindingElement, BindingContext context, System.ServiceModel.Channels.MessageEncoderFactory defaultMessageEncoderFactory) : this(bindingElement, context, defaultMessageEncoderFactory, HostNameComparisonMode.Exact) { }