For debugging purposes, I needed to alter the xml SOAP request completely before sending the request.
In this post, I showed how to log all outgoing SOAP request by using IClientMessageInspector. I’d use the same method to alter the request before sending.
public object BeforeSendRequest(ref Message request, IClientChannel channel)
{
var message = "new xml goes here";
var bytes = Encoding.UTF8.GetBytes(message);
var reader = XmlDictionaryReader.CreateTextReader(bytes, XmlDictionaryReaderQuotas.Max);
request = Message.CreateMessage(request.Version, request.Headers.Action, reader);
return null;
}