WCF - Inspecter les messages envoyés/reçus?
J'ai 2 solutions:
- Solution De Serveur De
- Solution Client
Le serveur s'enregistre lui-même à mon localhost IIS: http://localhost/MyApp/
Le client ajoute des Services WCF (Références de Service) à partir de localhost application: http://localhost/MyApp/MyService.svc
Quand je suis en cours d'exécution le client, je veux être en mesure de voir les messages qui sont transmis en arrière. J'ai téléchargé le Violoneux, mais il ne semble pas vouloir me montrer tout le trafic envoyé, sauf si j'utilise un navigateur web. Suis-je à l'aide de Fiddler mal ou est-il un autre outil que je doit utiliser pour cela?
Pour préciser, ce que je cherche à faire c'est de voir les messages transmis. Je ne veux pas faire n'importe quoi avec eux, sauf les voir visuellement avec mes propres yeux.
J'aime le Service WCF Journal de l'Utilitaire, mais je ne pense pas que j'ai le bon réglage sur on. Je ne peux pas voir le réel message de savon, juste qu'un message a été reçu.
Et aussi de clarifier davantage, je ne m'inquiète pas ce que l'outil que j'utilise aussi longtemps que je peux facilement voir les messages eux-mêmes.
Vous devez vous connecter pour publier un commentaire.
Pour afficher le contenu du message, vous devez ajouter une source pour le Système.ServiceModel.MessageLogging dans votre fichier de configuration. Le message dans l'onglet Visionneuse de Trace affichera le message complet pour un appel de service.
Voici un exemple de fichier de configuration:
Voir la Configuration de Traçage sujet sur MSDN pour plus d'informations. http://msdn.microsoft.com/en-us/library/ms733025.aspx
propagateActivity="true"
deSystem.ServiceModel.MessageLogging
et puis cela a fonctionné pour moipropagateActivity="true"
doit être supprimé, pourquoi ne pas corriger la réponse? Je vous remercie.Peut-être que je manque quelque chose, mais...
Pourquoi n'utilisez-vous pas la WCF fonctionnalités de traçage? C'est un fantastique outil de dépannage. Je l'ai utilisé pour les services hébergés dans IIS/ÉTAIT également.
L'activation de la WCF de Traçage
BTW, certaines personnes ne le savent pas, mais vous pouvez ouvrir les traces du côté serveur et côté client, dans le même temps, et le Spectateur va vous montrer la corrélation entre le serveur et le client d'actions dans un joli graphique.
EDIT: à chaque fois que j'ai eu pour capturer le trafic TCP/IP, j'utilise WireShark. Si vous avez besoin de le faire par programmation, vous pouvez utiliser SharpPCAP, afin que je puisse prendre des mesures sur ce que j'ai fait une capture à partir du réseau. Mais, pour le dépannage, beaucoup mieux, de s'appuyer sur WCF Suivi.
Si vous voulez inspecter les messages programattically, vous pouvez mettre en œuvre un
IClientMessageInspector
de l'interface et l'enregistrer avec votre client.Il vous permet d'accéder à tous les messages, peu importe ce que la liaison que vous utilisez, alors que en utilisant des outils comme Fiddler vous permettra seulement d'inspecter les messages en utilisant le canal de transport HTTP.
Noter que l'utilisation de cette technique, vous pouvez faire beaucoup en fait de modifier les messages ou faire beaucoup plus (feu désactiver les notifications, par exemple). Si tout ce que vous voulez faire est de mettre vos yeux sur le message, puis l'aide de suivi peut-être plus facile pour vous.
Est votre service de SAVON ou de Paisibles? Vous pouvez utiliser le Service WCF Visionneuse de Trace de l'Outil pour afficher le message SOAP en-têtes et des corps. Instructions pour la configuration de votre service web pour le suivi sont ici.
Regardez cette StackOverflow fil: Comment utiliser un violon pour le moniteur de service WCF
Il répond à certaines de vos questions. vous pouvez également utiliser quelque chose comme WireShark si vous voulez examiner tout sur le fils plutôt que de configurer un Proxy, comme Fiddler ne.
Dans WCF, nous pouvons utiliser une autre façon de voir les messages SOAP - personnalisé MessageEncoder - un faible niveau de pipeline point d'extensibilité. Contrairement au message d'inspecteurs (IDispatchMessageInspector /IClientMessageInspector) il voit l'origine de l'octet contenu, y compris toute la malformation de données XML. Vous avez besoin d'envelopper un standard textMessageEncoding personnalisés élément de liaison et ajuster config fichier à utiliser cette liaison personnalisée.
En outre vous pouvez voir à titre d'exemple comment j'ai fait dans mon projet - emballage textMessageEncoding, l'exploitation forestière codeur, liaison personnalisée élément et config.