A C# client application we developed calls an external SOAP web service of a third party company.
Now I want to trace the exact SOAP request envelopes that are being generated by the VS.NET-generated SOAP proxy in our application and transfered to the external SOAP web service.
The method of using a network monitor like Wireshark (as described here) or using Microsoft Network Monitor is no option since the externl SOAP web service only provides an SSL/HTTPS URL, so the payload of the HTTP packages are encrypted and not viewable.
My question is:
Is there a way of configuring the .NET-built-in web service client classes to output/trace/log their underlying HTTP requests and responses that are being generated/received? (or maybe some kind of event to subscribe to?)
If you’re using a standard web service (not WFC), you can extend the SoapExtension class as described here:
http://www.blog.encoresystems.net/articles/how-to-capture-soap-envelopes-when-consuming-a-web-service.aspx
If you’re using WFC, then you can implement IEndpointBehavior and IClientMessageBehavior as described here:
http://weblogs.asp.net/paolopia/archive/2007/08/23/writing-a-wcf-message-inspector.aspx
I use both, depending on whether I’m using web or service references.