[ServiceContract] public interface IDemo1 { [OperationContract] string HelloWorld(string name); }
so how can we invoke above using IRequestChannel
var httpsBasicBinding = new BasicHttpBinding(BasicHttpSecurityMode.Transport); var endpoint = "https://host/service.svc"; var channelFactory = new ChannelFactory<IRequestChannel>(httpsBasicBinding, endpoint); var channel = null;
try
{
channelFactory.Open();
channel = channelFactory.CreateChannel();
channel.Open();
string body = "<HelloWorld xmlns="http://tempuri.org/"><name>Suresh</name></HelloWorld>";
var messageBody = XmlReader.Create(new MemoryStream(Encoding.UTF8.GetBytes(body)
Message message = Message.CreateMessage(MessageVersion.Soap11,
"http://tempuri.org/IDemo1/HelloWorld"); Message response = channel.Request(message);
var result = response.GetReaderAtBodyContents().ReadOuterXml(); //parse based on the requirments Console.WriteLine(result);
channel.Close();
}
finally
{
channel.close(); //abort if faulted
channelFactory.Close(); //abort if faulted }
reference : http://www.codeproject.com/Articles/34632/How-to-pass-arbitrary-data-in-a-Message-object-usi