Just posting this so that I can find it again: I tend to rely heavily on Simon Fell's TcpTrace utility when testing and diagnosing Web Services, so with WSE and WCF there's usually a need to write some code in the client to have the client-side proxy call the server through TcpTrace correctly. Here's the code for both scenarios:


Just change the destination EndpointReference to include a Via URL:

Uri serviceUri = "http://localhost:8080/TypeInfo/TypeSvc.asmx";

Uri tcpTraceUri = "http://localhost:8080/TypeInfo/TypeSvc.asmx";

proxy.Destination = new EndpointReference(serviceUri, tcpTraceUri);

WCF (as of Feb06 CTP)

Just add a new Via behavior (from System.ServiceModel.Description) to the service endpoint:

TypeInfoServiceContractProxy proxy = new TypeInfoServiceContractProxy();

Uri tcpTraceUri = new Uri("http://localhost:8080/TypeInfo");

proxy.Endpoint.Behaviors.Add(new ViaUriBehavior(tcpTraceUri));

I think I like WCF's way of doing it a little bit more. Though it is not as obvious at first, it seems very logical and fits the overall model, at least imho.


I hadn't noticed that Aaron Skonnard had also blogged about how to do this for WCF by changing the server-side configuration here. Also, here's to how to do it on the client-side using configuration as well:


    <behavior name="tcpTraceBehavior">

       <channelViaUri viaUri="http://localhost:8080/TypeInfo"/>




     <endpoint address="http://localhost:81/TypeInfo" binding="wsHttpBinding"








Tomas Restrepo

Software developer located in Colombia. Sr. PFE at Microsoft.