【IT168技术文档】
为了使大家有一个具体的认识,我给出了Host该Service的configuration:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <services> <service name="Artech.ExceptionHandling.Service.CalculatorService"> <endpoint binding="wsHttpBinding" contract="Artech.ExceptionHandling.Contract.ICalculator" address="http://localhost:8888/Calculator" /> </service> </services> </system.serviceModel> </configuration> 在一般的情况下,Client具有下面一段对应的Configuration(Port为8888) <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <client> <endpoint address="http://localhost:8888/Calculator" binding="wsHttpBinding" contract="Artech.ExceptionHandling.Contract.ICalculator" name="defualtEndpoint" /> </client> </system.serviceModel> </configuration> 上面实际上是Client直接和Service 进行交互的方式。现在我们需要做的是,先把Soap发送给tcpTrace,tcpTrace进行Soap trace之后再把Soap Message传到真正的Service。就需要一个特殊的Client端的Endpoint Behavior:ClientViaBehavior。假设tcpTrace进行监听的Port为8080,那么Client实现了 ClientViaBehavior的configuration将会是如下的样子: <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <behaviors> <endpointBehaviors> <behavior name="calculatorEndpointBehavior"> <clientVia viaUri="http://localhost:8080/Calculator" /> </behavior> </endpointBehaviors> </behaviors> <client> <endpoint address="http://localhost:8888/Calculator" behaviorConfiguration="calculatorEndpointBehavior" binding="wsHttpBinding" contract="Artech.ExceptionHandling.Contract.ICalculator" name="defualtEndpoint" /> </client> </system.serviceModel> </configuration>