public void DuplexEcho() { string testString = new string('a', 3000); IWebHost host = ServiceHelper.CreateWebHostBuilder <Startup>(_output).Build(); using (host) { System.ServiceModel.ChannelFactory <ServiceContract.IDuplexTestService> factory = null; ServiceContract.IDuplexTestService channel = null; host.Start(); try { System.ServiceModel.NetTcpBinding binding = ClientHelper.GetBufferedModeBinding(); var callback = new ServiceContract.DuplexTestCallback(); factory = new System.ServiceModel.DuplexChannelFactory <ServiceContract.IDuplexTestService>( new System.ServiceModel.InstanceContext(callback), binding, new System.ServiceModel.EndpointAddress(host.GetNetTcpAddressInUse() + Startup.DuplexRelativeAddress)); channel = factory.CreateChannel(); ((IChannel)channel).Open(); var registerSuccess = channel.RegisterDuplexChannel(); Assert.True(registerSuccess, "Registration was not successful"); channel.SendMessage(testString); Assert.Equal(1, callback.ReceivedMessages.Count); Assert.Equal(testString, callback.ReceivedMessages[0]); ((IChannel)channel).Close(); factory.Close(); } finally { ServiceHelper.CloseServiceModelObjects((IChannel)channel, factory); } } }
private void DestroyConnection() { if (_Factory != null) { try { _Factory.Close(); } catch { _Factory.Abort(); } ((IDisposable)_Factory).Dispose(); _Factory = null; } _ServiceProxy = null; _ClientActual = null; }