Сначала конечно же генерируем Service client . Для этого заходим в ServiceReference и там жмем "Добавить ссылку на службу"
Далее мы можем отправить сообщение оборачивая в Envelope
Или не оборачивая в Envelope
Также я как то писал как ответное сообщения от сервиса сохранить в файл. Есть другое решение, более короткое.
Далее мы можем отправить сообщение оборачивая в Envelope
ServiceReference1.ServiceSAClient service = new ServiceReference1.ServiceSAClient(); using (FileStream stream = new FileStream(textBox1.Text, FileMode.Open)) { mlReader reader = XmlReader.Create(stream); MessageVersion ver = MessageVersion.CreateVersion(EnvelopeVersion.Soap11, AddressingVersion.None); System.ServiceModel.Channels.Message m = service.async_getMessage(System.ServiceModel.Channels.Message.CreateMessage(ver, "http://tempuri.org/IServiceWCF/Message", reader)); }
Или не оборачивая в Envelope
XmlDocument d = new XmlDocument(); d.PreserveWhitespace = false; d.Load(@"send.xml"); MemoryStream ms = new MemoryStream(); XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(ms); d.WriteTo(writer); writer.Flush(); ms.Position = 0;
MessageVersion ver = MessageVersion.CreateVersion(EnvelopeVersion.Soap11, AddressingVersion.None); System.ServiceModel.Channels.Message msend = System.ServiceModel.Channels.Message.CreateMessage(XmlDictionaryReader.CreateTextReader(ms, XmlDictionaryReaderQuotas.Max), int.MaxValue, ver); msend.Headers.Action = "http://tempuri.org/IServiceWCF/Message"; System.ServiceModel.Channels.Message m =service.async_getMessage(msend);
Также я как то писал как ответное сообщения от сервиса сохранить в файл. Есть другое решение, более короткое.
System.ServiceModel.Channels.Message m =service.async_getMessage(msend); MessageBuffer buf = m.CreateBufferedCopy(int.MaxValue); using (var msstream = new MemoryStream()) { using (FileStream file = new FileStream("WCF Responce.xml", FileMode.Create, System.IO.FileAccess.Write)) { buf.WriteMessage(file); file.Flush(); } }
No comments:
Post a Comment
Note: only a member of this blog may post a comment.