Web service et message SOAP XML [C#] - C#/.NET managed - Programmation
Marsh Posté le 15-02-2011 à 09:26:18
suffit d'utiliser un logiciel de capture de paquets, comme Wireshark ou Fiddler
Marsh Posté le 15-02-2011 à 11:39:30
Harkonnen a écrit : suffit d'utiliser un logiciel de capture de paquets, comme Wireshark ou Fiddler |
Merci, mais il s'agit d'une application supplémentaire, l'objectif étant d'écrire ça dans les logs de l'application en direction des personnes de la productions, donc aucun ajout de logiciels ou de services supplémentaires n'est possible.
Marsh Posté le 15-02-2011 à 19:38:18
Pas d'autres suggestions ?
Marsh Posté le 15-02-2011 à 19:38:58
il y a moyen de récupérer l'objet WebRequest. Après faudrait voir si on peut convertir cela en xml.
Complètement inutile de faire cela, mais bon.
Marsh Posté le 15-02-2011 à 19:43:26
si je me souviens bien.
Tu crée une classe de même nom et de même référence que ta "WebReference". Cette classe est de type "partial".
Tu override "GetWebRequest".
Une fois que tu as l'objet de type "HttpWebRequest", tu peux récupérer le stream.
http://blogs.msdn.com/b/kaevans/ar [...] /9215.aspx
http://bytes.com/topic/c-sharp/ans [...] p-xml-body
ça devrait te donner un bon début de piste
Marsh Posté le 15-02-2011 à 23:54:32
moi23372 a écrit : si je me souviens bien. |
Merci pour la piste, j'essaierai ça demain .
Marsh Posté le 17-02-2011 à 14:09:15
Tu dis que tu es en 3.5, (donc WCF) hors la solution qui t'est ici proposée ici s'applique à une reference 2.0 si je ne m'abuse. C'est complètement différent.
Pour du WCF il faut qu'après avoir instancié ton "client" tu viennes affecter à client.Endpoint.Behaviors une instance d'une classe qui réalise les bonnes méthodes des interfaces "IEndpointBehavior" et "IClientMessageInspector".
C'est facile, avec google tu devrais trouver rapidement.
rq : cela peut aussi se faire de façon déclarative dans le fichier de conf de ton appli, mais je préfère la solution qui passe par le code.
Marsh Posté le 06-03-2011 à 14:54:07
Hello,
J'ai pas encore véritablement eu le temps d'essayer, mais je pense en effet que c'est la bonne voie.
Merci TotalRecall.
Par contre je n'ai pas trouvé un truc sur le net de "tuto" indiquant cette procédure, mais dés que j'ai le temps de le tester je m'y mets.
Marsh Posté le 06-03-2011 à 16:10:40
Si j'y pense demain je te récupérerai un exemple, avec une implé qui marche côté client et une côté serveur (le cas le plus chiant)
Marsh Posté le 07-03-2011 à 17:44:24
Pour le côté client :
Code :
|
A lier à .Endpoint.Behaviors.Add(inspector); lors de l'instanciation de ton client.
Et pour le côté serveur si besoin :
Code :
|
Accompagné de l'attribut :
Code :
|
Que tu poses sur la classe implémentant ton service ( [WcfServerSideInspectorBehavior()] )
Pour moi les deux fonctionnent nickel avec les bindings SOAP standards. De mémoire rien à modifier dans le fichier de conf de l'appli : tout se fait sur le code.
Evidemment tu peux supprimer les références à log4net pour y mettre une écriture de fichier ou ce que tu voudras comme framework de logging.
Marsh Posté le 14-03-2011 à 07:50:23
Wow, merci TotalRecall, j'espère avoir le temps cette semaine pour tester cela.
En tous cas merci beaucoup pour ton aide , j'espère revenir en disant que tout est ok cette semaine .
Marsh Posté le 01-04-2011 à 17:27:56
TotalRecall > J'ai testé pour le client.
Ca fonctionne très bien .
Je n'ai pas encore essayé pour le serveur.
Marsh Posté le 04-04-2011 à 14:02:10
Hello,
Pour tracer les requêtes du coté du WebService, je n'arrive pas vraiment à saisir l'exemple que tu m'as donné, et à part dans le fichier de configuration je ne vois pas comment l'implémenter directement dans le code (pour l'associé au behavior).
A quoi sert la classe attribute ?
un peu perdu en somme.
Merci.
Marsh Posté le 05-04-2011 à 12:10:12
Hello,
J'ai trouvé quelques explications très détaillées, pour ceux que cela intéresse :
http://msdn.microsoft.com/en-us/magazine/cc163302.aspx
http://www.thereforesystems.com/ca [...] f-service/
Mon manque de connaissance dans le fonctionnement de WCF a fait que j'ai été un peu perdu côté serveur .
Merci.
Marsh Posté le 15-02-2011 à 08:19:04
Bonjour,
Je suis en .net 3.5, et possibilité d'évoluer vers le 4.
J'appelle un webservice, et les équipes de prod aimeraient avoir le contenu de l'appel à ce webservice, c'est à dire le message SOAP qui est généré.
Je n'ai rien trouvé de très claire sur la toile.
Avez vous une solution en modifiant la classe proxy ?
De même pour le message de retour, mais je crois qu'il suffit de re-sérialisé l'objet, non ?
Merci beaucoup.
Message édité par Clarkent le 15-02-2011 à 08:30:18
---------------
"PAR LE POUVOIR DU CRÂNE ANCESTRAL, JE DETIENS LA FORCE TOUTE PUISSANTE".