Get SOAP Message before sending it to the WebService in .NET
You can simply serialize the request object, before subtmit, like this:
var sreq = new SomeSoapRequest();
// ... fill in here ...
var serxml = new System.Xml.Serialization.XmlSerializer(sreq.GetType());
var ms = new MemoryStream();
serxml.Serialize(ms, sreq);
string xml = Encoding.UTF8.GetString(ms.ToArray());
// in xml string you have SOAP request
What you need is a SoapExtension. There's quite a few good examples here:
How do I get access to SOAP response
Getting RAW Soap Data from a Web Reference Client running in ASP.net
XML Parse error while processing the SOAP response
One of the articles linked to: http://msdn.microsoft.com/en-us/magazine/cc164007.aspx
Also search SO for: https://stackoverflow.com/search?q=SoapExtension