2016-05-27 4 views

Antwort

0

Ich habe meinen Kopf auf, wie man den tatsächlichen Inhalt einer SOAP-Nachricht, die an den Server gesendet wird, gesucht.

Schließlich fand ich die Antwort, die Ich mag würde hier mit sehr einfachen Code teilen - basierend auf https://wcfpro.wordpress.com/2011/03/29/iclientmessageinspector/

zunächst ein Windows Forms-Anwendung erstellen und einen Verweis auf einen SOAP-Webservice hinzufügen.

erstellen Sie dann die Klassen angegeben, wie in https://wcfpro.wordpress.com/2011/03/29/iclientmessageinspector/

unterhalb einer Kopie Siehe aus diesem Beitrag

public class MyBehavior : IEndpointBehavior 
{ 

    public void AddBindingParameters(
     ServiceEndpoint endpoint, 
     BindingParameterCollection bindingParameters) 
    { 
    } 

    public void ApplyClientBehavior(
     ServiceEndpoint endpoint, 
     ClientRuntime clientRuntime) 
    { 
     clientRuntime.MessageInspectors.Add(new MyMessageInspector()); 
    } 

    public void ApplyDispatchBehavior(
     ServiceEndpoint endpoint, 
     EndpointDispatcher endpointDispatcher) 
    { 
    } 

    public void Validate(
     ServiceEndpoint endpoint) 
    { 
    } 
} 

public class MyMessageInspector : IClientMessageInspector 
{ 
    public void AfterReceiveReply(ref Message reply, object correlationState) 
    { 
     // use 'reply.ToString()' te get content and do something with is 
    } 

    public object BeforeSendRequest(ref Message request, IClientChannel channel) 
    { 
     // use 'request.ToString()' te get content and do something with is 
     return null; 
    } 
} 

Und jetzt kommt der wichtigste Teil, die mir dauerte eine Weile, um herauszufinden. Wenn Sie Instanz des Webservice erstellen:

MyServiceClient svc = new MyServiceClient(); 

Dann das Verhalten auf den Dienst mit diesem Code hinzufügen:

svc.ChannelFactory.Endpoint.Behaviors.Add(new MyBehavior()); 

Und jetzt haben Sie etwas, das Sie beginnen können, mit arbeiten!

Verwandte Themen