2009-11-03 4 views
7

Une application cliente C# que nous avons développée appelle un service Web SOAP externe d'une société tierce.Le suivi de l'enveloppe SOAP envoyée par un client de service Web .NET est-il possible?

Maintenant, je veux tracer les enveloppes de requêtes SOAP exactes qui sont générées par le proxy SOAP généré par VS.NET dans notre application et transférées vers le service Web SOAP externe. La méthode d'utilisation d'un moniteur réseau comme Wireshark (comme décrit here) ou l'utilisation de Microsoft Network Monitor n'est pas une option puisque le service Web externl SOAP fournit uniquement une URL SSL/HTTPS, de sorte que la charge des paquets HTTP est cryptée et non visible.

Ma question est:

Est-il possible de configurer les classes client service Web .NET intégré à la sortie/trace/log leurs requêtes HTTP sous-jacentes et les réponses qui sont générées/reçues? (ou peut-être un type d'événement auquel vous vous abonnez?)

+1

tcpMon peut faire ce que vous voulez. Je l'ai utilisé pour tracer les services web de jax-ws. – ChadNC

Répondre

6

Si vous utilisez un service Web standard (non WFC), vous pouvez étendre la classe SoapExtension comme décrit ici:

http://www.blog.encoresystems.net/articles/how-to-capture-soap-envelopes-when-consuming-a-web-service.aspx

Si vous utilisez WFC, puis vous pouvez mettre en œuvre IEndpointBehavior et IClientMessageBehavior comme décrit ici:

http://weblogs.asp.net/paolopia/archive/2007/08/23/writing-a-wcf-message-inspector.aspx

J'utilise les deux, selon que j'utilise des références Web ou de service.

+1

+1 pour le SoapExtension, utilisé aussi avec succès. OP n'a pas mentionné s'il s'agissait d'un client Web/Windows. Si le Web, je ne crois pas que le code SoapExtenstion dans le lien est websafe. –

Questions connexes