Blogger :
Benjamin Ms blog
All posts :
All posts by Benjamin Ms blog
Category :
WSE
Blogged date : 2004 May 25
When developing with WSE it is often useful to be able to see what is going out on
the wire. Changes in the WSE 2.0 release mean that is no longer possible to
use tracing tools such as tcpTrace and MSSoapT. Christop
Schittko has a good post on the
background to this problem and shows how to use the inbuilt-WSE trace capabilities to
get around it. There's also another solution, which is to use Mindreef
SOAPScope's WebProxy, and as I was writing this I noticed that Mike
Taulty has also posted his WSE
2.0 trace tool, which has become my new default favourite.
Background
The previous approach to tracing in WSE was to listen on a one port with a tracing
tool, then forward the request onto another port. WSE 2.0 now checks to make
sure that the WS-Addressing To header in the SOAP message matches the address in the
HTTP Header. This means the existing tracing tools will return a fault.
The SOAPScope solution
SOAPScope has implemented it's own version of System.Net.WebProxy that
allows proxying to localhost. It also means that the address in the SOAP envelope
matches the address in the HTTP header. To use it you just need to add the following
to the client's config file:
<system.net>
<defaultProxy>
<proxy proxyaddress="http://benjaminm:5049"
bypassonlocal="false"/>
<module type="Mindreef.Net.WebProxyEx, MrTools,
Version=3.0.0.0, Culture=neutral, PublicKeyToken=90f6595dbbe888f3" />
</defaultProxy>
</system.net>
Mike Taulty's solution
Mike has written a new WSE 2.0 Trace Tool that uses custom input and output filters
into the WSE Pipeline. These filters copy the message into a new SOAP envelop and
post it a tracing 'web' service listening on the a tcp port, using the SOAP Messaging
(soap.tcp:\\) support within WSE 2.0. Using it requires adding the following
to the config file:
<microsoft.web.services2>
<filters>
<output>
<add type="WSETracingFilter.WSEOutputFilter,WSETracingFilter,
Version=1.0.0.0, Culture=Neutral, PublicKeyToken=1c1f2f7177e1ff79" />
</output>
<input>
<add type="WSETracingFilter.WSEInputFilter,WSETracingFilter,
Version=1.0.0.0, Culture=Neutral, PublicKeyToken=1c1f2f7177e1ff79" />
</input>
</filters>
</microsoft.web.services2>
It's very nice! I'm going to be using it tomorrow in my talk at TechEd.