J'ai généré une classe Proxy à partir d'une URL WSDL. Je peux envoyer des requêtes, mais je dois me connecter au XML envoyé. Comment ferais-je cela?Comment enregistrer le code XML que ma classe proxy envoie à un service Web?
Répondre
J'ai effectué ce côté serveur en implémentant IDispatchMessageInspector comme décrit here. Cependant, je crois que vous pouvez faire la même chose côté client en implémentant l'interface IClientMessageInspector. Si je me souviens bien, la méthode Message .ToString() retourne le SOAP que vous pouvez placer directement dans votre journal.
Cependant, il ya un getcha que je crois est côté serveur seulement, mais je vais le mentionner ici car il ne peut pas être.
La classe Message est conçue pour être lue une seule fois. Puisque vous interceptez le message pour le journaliser, vous devez vous assurer de ne pas le marquer comme un effet secondaire. Vous devez cloner comme ceci:
public class ClientMessageLogger : IClientMessageInspector
{
public void AfterReceiveReply(
ref System.ServiceModel.Channels.Message reply, object correlationState)
{
// Do nothing.
}
public object BeforeSendRequest(
ref System.ServiceModel.Channels.Message request, IClientChannel channel)
{
// Create a buffer.
MessageBuffer buffer = request.CreateBufferedCopy(Int32.MaxValue);
// Set the request reference to an unspoiled clone.
request = buffer.CreateMessage();
// Make another unspoiled clone to process (taint) locally within this method.
Message originalMessage = buffer.CreateMessage();
// Log the SOAP xml.
Log(originalMessage.ToString());
return null;
}
}
Merci. Cela m'a mis sur la bonne voie. –
@My Other Me - Juste curieux, mais était-ce un problème pour le client? Sinon, je l'enlèverai de ma réponse. – sheikhjabootie
Vous n'avez pas besoin d'écrire du code pour faire vous-même: il suffit configure WCF message logging
Vous pouvez également activer la journalisation SOAP, dans le cas où vous ne l'utilisez WCF:
http://msdn.microsoft.com/en-us/library/esw638yk(VS.71).aspx
J'ai essayé ça, mais je n'ai pas réussi à obtenir le côté client pour enregistrer quoi que ce soit. –
- 1. .NET Ajout d'en-têtes HTTP personnalisés au service Web Le proxy envoie des erreurs
- 2. Forcer le service Web .NET à utiliser la classe d'objets locale, et non la classe proxy
- 3. classe proxy bâtiment de problème pour le service Web SOAP
- 4. Comment tester le code XML envoyé à un service Web dans Ruby/Rails
- 5. Comment générer un code de proxy de service Web avec wsdl.exe qui est sérialisable
- 6. Qu'est-ce que la classe proxy
- 7. Chargement du code XML à partir du service Web
- 8. Appeler le service Web et XML Parser d'une autre classe
- 9. Comment puis-je tester un code qui envoie une requête de service Web SOAP?
- 10. Classe de proxy Web Service pour implémenter l'interface
- 11. Envoi d'un fichier XML brut à un service Web
- 12. XML via le service Web
- 13. 2.0 Proxy de service Web pour le service WCF
- 14. Obtention de code XML rompu suivi d'un code XML complet à partir du service Web
- 15. Appel d'un service Web depuis un serveur proxy
- 16. Appel d'un service Web sans proxy
- 17. Comment créer une classe "proxy" pour un service Web dans Eclipse for Java?
- 18. Comment puis-je générer une classe de proxy XML Web Services à partir de WCF
- 19. Comment envoyer des données XML en tant que requête à l'aide du service Web XML
- 20. Comment exposer ma collection à partir du service Web (WCF)
- 21. Comment appeler un service Web à partir d'un service Web
- 22. Comment transmettre un tableau de chaînes en tant que BSTR * au proxy de service Web
- 23. Nginx envoie le proxy sauvegardé conent au format gzip
- 24. Comment sérialiser/désérialiser le code proxy WCF généré?
- 25. Est-il possible d'envoyer une requête à distance à un service Web sans utiliser le proxy?
- 26. Comment accéder à un service Web PHP à partir d'ASP.Net?
- 27. service web générant problème de proxy
- 28. Comment enregistrer xml dans un contrôle webbrowser?
- 29. Comment enregistrer un fichier Excel 2007 dans "OOXML" (texte xml) pour que je puisse le modifier dans le code?
- 30. Les classes de proxy .NET Web Service peuvent-elles être utilisées en tant que singletons?
est-ce que cela a à se produire sur le côté client, ou est une solution d'enregistrement côté serveur également acceptable? –
Je ne suis pas en contrôle du côté serveur, il devrait donc être côté client. –