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; } }
internal static bool IsDefined(NetHttpMessageEncoding value) { return (value == NetHttpMessageEncoding.Binary || value == NetHttpMessageEncoding.Text || value == NetHttpMessageEncoding.Mtom); }
public static void WebSocket_Http_Duplex_Buffered(NetHttpMessageEncoding messageEncoding) { EndpointAddress endpointAddress; NetHttpBinding binding = null; ClientReceiver clientReceiver = null; InstanceContext context = null; DuplexChannelFactory <IWSDuplexService> channelFactory = null; IWSDuplexService client = null; try { // *** SETUP *** \\ binding = new NetHttpBinding() { MaxReceivedMessageSize = ScenarioTestHelpers.SixtyFourMB, MaxBufferSize = ScenarioTestHelpers.SixtyFourMB, }; binding.WebSocketSettings.TransportUsage = WebSocketTransportUsage.Always; binding.MessageEncoding = messageEncoding; clientReceiver = new ClientReceiver(); context = new InstanceContext(clientReceiver); endpointAddress = new EndpointAddress(Endpoints.WebSocketHttpDuplexBuffered_Address + Enum.GetName(typeof(NetHttpMessageEncoding), messageEncoding)); channelFactory = new DuplexChannelFactory <IWSDuplexService>(context, binding, endpointAddress); client = channelFactory.CreateChannel(); // *** EXECUTE *** \\ // Invoking UploadData client.UploadData(ScenarioTestHelpers.CreateInterestingString(123)); // Invoking StartPushingData client.StartPushingData(); Assert.True(clientReceiver.ReceiveDataInvoked.WaitOne(ScenarioTestHelpers.TestTimeout), String.Format("Test case timeout was reached while waiting for the buffered response from the Service. Timeout was: {0}", ScenarioTestHelpers.TestTimeout)); clientReceiver.ReceiveDataInvoked.Reset(); // Invoking StopPushingData client.StopPushingData(); Assert.True(clientReceiver.ReceiveDataCompleted.WaitOne(ScenarioTestHelpers.TestTimeout), String.Format("Test case timeout was reached while waiting for the buffered response from the Service to be completed. Timeout was: {0}", ScenarioTestHelpers.TestTimeout)); clientReceiver.ReceiveDataCompleted.Reset(); // Getting results from server via callback. client.GetLog(); Assert.True(clientReceiver.LogReceived.WaitOne(ScenarioTestHelpers.TestTimeout), String.Format("Test case timeout was reached while waiting for the Logging from the Service to be received. Timeout was: {0}", ScenarioTestHelpers.TestTimeout)); // *** VALIDATE *** \\ Assert.True(clientReceiver.ServerLog.Count > 0, "The logging done by the Server was not returned via the Callback."); // *** CLEANUP *** \\ ((ICommunicationObject)client).Close(); channelFactory.Close(); } finally { // *** ENSURE CLEANUP *** \\ ScenarioTestHelpers.CloseCommunicationObjects((ICommunicationObject)client, channelFactory); } }
public static void DefaultCtor_NetHttps_Echo_RoundTrips_String(NetHttpMessageEncoding messageEncoding) { string testString = "Hello"; ChannelFactory <IWcfService> factory = null; IWcfService serviceProxy = null; try { // *** SETUP *** \\ NetHttpsBinding netHttpsBinding = new NetHttpsBinding(); netHttpsBinding.MessageEncoding = messageEncoding; factory = new ChannelFactory <IWcfService>(netHttpsBinding, new EndpointAddress(Endpoints.HttpBaseAddress_NetHttps + Enum.GetName(typeof(NetHttpMessageEncoding), messageEncoding))); serviceProxy = factory.CreateChannel(); // *** EXECUTE *** \\ string result = serviceProxy.Echo(testString); // *** VALIDATE *** \\ Assert.True(String.Equals(testString, result), String.Format("Expected result was {0}. Actual was {1}", testString, result)); // *** CLEANUP *** \\ factory.Close(); ((ICommunicationObject)serviceProxy).Close(); } finally { // *** ENSURE CLEANUP *** \\ ScenarioTestHelpers.CloseCommunicationObjects((ICommunicationObject)serviceProxy, factory); } }
internal static bool IsDefined(NetHttpMessageEncoding value) { return value == NetHttpMessageEncoding.Binary || value == NetHttpMessageEncoding.Text || value == NetHttpMessageEncoding.Mtom; }
public static void DefaultSettings_Echo_RoundTrips_String(NetHttpMessageEncoding messageEncoding) { string testString = "Hello"; ChannelFactory <IWcfService> factory = null; IWcfService serviceProxy = null; try { // *** SETUP *** \\ NetHttpBinding binding = new NetHttpBinding(); binding.MessageEncoding = messageEncoding; factory = new ChannelFactory <IWcfService>(binding, new EndpointAddress(Endpoints.HttpBaseAddress_NetHttp + Enum.GetName(typeof(NetHttpMessageEncoding), messageEncoding))); serviceProxy = factory.CreateChannel(); // *** EXECUTE *** \\ string result = serviceProxy.Echo(testString); // *** VALIDATE *** \\ Assert.NotNull(result); Assert.Equal(testString, result); // *** CLEANUP *** \\ factory.Close(); ((ICommunicationObject)serviceProxy).Close(); } finally { // *** ENSURE CLEANUP *** \\ ScenarioTestHelpers.CloseCommunicationObjects((ICommunicationObject)serviceProxy, factory); } }
private Binding GetNetHttpBinding(NetHttpMessageEncoding encoding) { var binding = new NetHttpsBinding(); binding.MessageEncoding = encoding; binding.Name = Enum.GetName(typeof(NetHttpMessageEncoding), encoding); return(binding); }
public static void WebSocket_Http_RequestReply_Streamed(NetHttpMessageEncoding messageEncoding) { EndpointAddress endpointAddress; NetHttpBinding binding = null; ChannelFactory <IWSRequestReplyService> channelFactory = null; IWSRequestReplyService client = null; FlowControlledStream uploadStream = null; try { // *** SETUP *** \\ binding = new NetHttpBinding() { MaxReceivedMessageSize = ScenarioTestHelpers.SixtyFourMB, MaxBufferSize = ScenarioTestHelpers.SixtyFourMB, }; binding.WebSocketSettings.TransportUsage = WebSocketTransportUsage.Always; binding.TransferMode = TransferMode.Streamed; binding.MessageEncoding = messageEncoding; endpointAddress = new EndpointAddress(Endpoints.WebSocketHttpRequestReplyStreamed_Address + Enum.GetName(typeof(NetHttpMessageEncoding), messageEncoding)); channelFactory = new ChannelFactory <IWSRequestReplyService>(binding, endpointAddress); client = channelFactory.CreateChannel(); // *** EXECUTE *** \\ using (Stream stream = client.DownloadStream()) { int readResult; // Read from the stream, 1000 bytes at a time. byte[] buffer = new byte[1000]; do { readResult = stream.Read(buffer, 0, buffer.Length); }while (readResult != 0); } uploadStream = new FlowControlledStream(); uploadStream.ReadThrottle = TimeSpan.FromMilliseconds(500); uploadStream.StreamDuration = TimeSpan.FromSeconds(1); client.UploadStream(uploadStream); // *** VALIDATE *** \\ foreach (string serverLogItem in client.GetLog()) { //Assert.True(serverLogItem != ScenarioTestHelpers.RemoteEndpointMessagePropertyFailure, ScenarioTestHelpers.RemoteEndpointMessagePropertyFailure); Assert.True(!ScenarioTestHelpers.IsLocalHost() || !serverLogItem.Contains(ScenarioTestHelpers.RemoteEndpointMessagePropertyFailure), serverLogItem); } // *** CLEANUP *** \\ ((ICommunicationObject)client).Close(); channelFactory.Close(); } finally { // *** ENSURE CLEANUP *** \\ ScenarioTestHelpers.CloseCommunicationObjects((ICommunicationObject)client, channelFactory); } }
void Initialize() { _messageEncoding = NetHttpBindingDefaults.MessageEncoding; _binaryMessageEncodingBindingElement = new BinaryMessageEncodingBindingElement() { MessageVersion = MessageVersion.Soap12WSAddressing10 }; TextMessageEncodingBindingElement.MessageVersion = MessageVersion.Soap12WSAddressing10; InternalWebSocketSettings.TransportUsage = NetHttpBindingDefaults.TransportUsage; InternalWebSocketSettings.SubProtocol = WebSocketTransportSettings.SoapSubProtocol; _basicHttpsSecurity = new BasicHttpsSecurity(); }
private void Initialize() { _messageEncoding = NetHttpBindingDefaults.MessageEncoding; _binaryMessageEncodingBindingElement = new BinaryMessageEncodingBindingElement() { MessageVersion = MessageVersion.Soap12WSAddressing10 }; this.TextMessageEncodingBindingElement.MessageVersion = MessageVersion.Soap12WSAddressing10; _session = new ReliableSessionBindingElement(); _reliableSession = new OptionalReliableSession(_session); this.WebSocketSettings.TransportUsage = NetHttpBindingDefaults.TransportUsage; this.WebSocketSettings.SubProtocol = WebSocketTransportSettings.SoapSubProtocol; _basicHttpSecurity = new BasicHttpSecurity(); }
void Initialize() { this.messageEncoding = NetHttpBindingDefaults.MessageEncoding; this.binaryMessageEncodingBindingElement = new BinaryMessageEncodingBindingElement() { MessageVersion = MessageVersion.Soap12WSAddressing10 }; this.TextMessageEncodingBindingElement.MessageVersion = MessageVersion.Soap12WSAddressing10; this.MtomMessageEncodingBindingElement.MessageVersion = MessageVersion.Soap12WSAddressing10; this.session = new ReliableSessionBindingElement(); this.reliableSession = new OptionalReliableSession(this.session); this.InternalWebSocketSettings.TransportUsage = NetHttpBindingDefaults.TransportUsage; this.InternalWebSocketSettings.SubProtocol = WebSocketTransportSettings.SoapSubProtocol; this.basicHttpsSecurity = new BasicHttpsSecurity(); }
private Binding GetNetHttpsBinding(NetHttpMessageEncoding messageEncoding, TransferMode transferMode) { NetHttpsBinding binding = new NetHttpsBinding() { MaxReceivedMessageSize = SixtyFourMB, MaxBufferSize = SixtyFourMB, }; binding.WebSocketSettings.TransportUsage = WebSocketTransportUsage.Always; binding.TransferMode = transferMode; binding.MessageEncoding = messageEncoding; binding.Name = Enum.GetName(typeof(TransferMode), transferMode) + Enum.GetName(typeof(NetHttpMessageEncoding), messageEncoding); return(binding); }
public static void WebSocket_Https_RequestReply_Buffered_KeepAlive(NetHttpMessageEncoding messageEncoding) { EndpointAddress endpointAddress; NetHttpsBinding binding = null; ChannelFactory <IWSRequestReplyService> channelFactory = null; IWSRequestReplyService client = null; try { // *** SETUP *** \\ binding = new NetHttpsBinding() { MaxReceivedMessageSize = ScenarioTestHelpers.SixtyFourMB, MaxBufferSize = ScenarioTestHelpers.SixtyFourMB, }; binding.WebSocketSettings.TransportUsage = WebSocketTransportUsage.Always; binding.WebSocketSettings.KeepAliveInterval = TimeSpan.FromSeconds(2); binding.TransferMode = TransferMode.Buffered; binding.MessageEncoding = messageEncoding; endpointAddress = new EndpointAddress(Endpoints.WebSocketHttpsRequestReplyBuffered_Address + Enum.GetName(typeof(NetHttpMessageEncoding), messageEncoding)); channelFactory = new ChannelFactory <IWSRequestReplyService>(binding, endpointAddress); client = channelFactory.CreateChannel(); // *** EXECUTE *** \\ // Invoking DownloadData string result = client.DownloadData(); // Invoking UploadData client.UploadData(ScenarioTestHelpers.CreateInterestingString(123)); // *** VALIDATE *** \\ foreach (string serverLogItem in client.GetLog()) { //Assert.True(serverLogItem != ScenarioTestHelpers.RemoteEndpointMessagePropertyFailure, ScenarioTestHelpers.RemoteEndpointMessagePropertyFailure); Assert.True(!ScenarioTestHelpers.IsLocalHost() || !serverLogItem.Contains(ScenarioTestHelpers.RemoteEndpointMessagePropertyFailure), serverLogItem); } // *** CLEANUP *** \\ ((ICommunicationObject)client).Close(); channelFactory.Close(); } finally { // *** ENSURE CLEANUP *** \\ ScenarioTestHelpers.CloseCommunicationObjects((ICommunicationObject)client, channelFactory); } }
internal override void InitializeFrom(HttpTransportBindingElement transport, MessageEncodingBindingElement encoding) { base.InitializeFrom(transport, encoding); if (encoding is BinaryMessageEncodingBindingElement) { _messageEncoding = NetHttpMessageEncoding.Binary; BinaryMessageEncodingBindingElement binary = (BinaryMessageEncodingBindingElement)encoding; this.ReaderQuotas = binary.ReaderQuotas; } if (encoding is TextMessageEncodingBindingElement) { _messageEncoding = NetHttpMessageEncoding.Text; } }
public static void WebSocket_Https_Duplex_Streamed(NetHttpMessageEncoding messageEncoding) { string endpointAddress; NetHttpsBinding binding = null; ClientReceiver clientReceiver = null; InstanceContext context = null; DuplexChannelFactory <IWSDuplexService> channelFactory = null; IWSDuplexService client = null; FlowControlledStream uploadStream = null; try { // *** SETUP *** \\ binding = new NetHttpsBinding() { MaxReceivedMessageSize = ScenarioTestHelpers.SixtyFourMB, MaxBufferSize = ScenarioTestHelpers.SixtyFourMB, }; binding.WebSocketSettings.TransportUsage = WebSocketTransportUsage.Always; binding.TransferMode = TransferMode.Streamed; binding.MessageEncoding = messageEncoding; clientReceiver = new ClientReceiver(); context = new InstanceContext(clientReceiver); endpointAddress = Endpoints.WebSocketHttpsDuplexStreamed_Address + Enum.GetName(typeof(NetHttpMessageEncoding), messageEncoding); channelFactory = new DuplexChannelFactory <IWSDuplexService>(context, binding, endpointAddress); client = channelFactory.CreateChannel(); // *** EXECUTE *** \\ using (Stream stream = client.DownloadStream()) { int readResult; // Read from the stream, 1000 bytes at a time. byte[] buffer = new byte[1000]; do { readResult = stream.Read(buffer, 0, buffer.Length); }while (readResult != 0); } uploadStream = new FlowControlledStream(); uploadStream.ReadThrottle = TimeSpan.FromMilliseconds(500); uploadStream.StreamDuration = TimeSpan.FromSeconds(1); client.UploadStream(uploadStream); client.StartPushingStream(); // Wait for the callback to get invoked before telling the service to stop streaming. // This ensures we can read from the stream on the callback while the NCL layer at the service // is still writing the bytes from the stream to the wire. // This will deadlock if the transfer mode is buffered because the callback will wait for the // stream, and the NCL layer will continue to buffer the stream until it reaches the end. Assert.True(clientReceiver.ReceiveStreamInvoked.WaitOne(ScenarioTestHelpers.TestTimeout), String.Format("Test case timeout was reached while waiting for the stream response from the Service. Timeout was: {0}", ScenarioTestHelpers.TestTimeout)); clientReceiver.ReceiveStreamInvoked.Reset(); // Upload the stream while we are downloading a different stream uploadStream = new FlowControlledStream(); uploadStream.ReadThrottle = TimeSpan.FromMilliseconds(500); uploadStream.StreamDuration = TimeSpan.FromSeconds(1); client.UploadStream(uploadStream); client.StopPushingStream(); // Waiting on ReceiveStreamCompleted from the ClientReceiver. Assert.True(clientReceiver.ReceiveStreamCompleted.WaitOne(ScenarioTestHelpers.TestTimeout), String.Format("Test case timeout was reached while waiting for the stream response from the Service to be completed. Timeout was: {0}", ScenarioTestHelpers.TestTimeout)); clientReceiver.ReceiveStreamCompleted.Reset(); // Getting results from server via callback. client.GetLog(); Assert.True(clientReceiver.LogReceived.WaitOne(ScenarioTestHelpers.TestTimeout), String.Format("Test case timeout was reached while waiting for the Logging from the Service to be received. Timeout was: {0}", ScenarioTestHelpers.TestTimeout)); // *** VALIDATE *** \\ Assert.True(clientReceiver.ServerLog.Count > 0, "The logging done by the Server was not returned via the Callback."); // *** CLEANUP *** \\ ((ICommunicationObject)client).Close(); channelFactory.Close(); } finally { // *** ENSURE CLEANUP *** \\ ScenarioTestHelpers.CloseCommunicationObjects((ICommunicationObject)client, channelFactory); clientReceiver.Dispose(); } }