Wie kann ich Abfangen von Ausgehenden und Eingehenden Soap-Nachrichten, die von C# - Client-Seite Web-Proxy
Ich Schreibe UI test eines asmx-web-service. Server und client sind .NET. Client-proxy generiert wurde, mit wsdl.exe.
Möchte ich abfangen und speichern eine string-Darstellung von ein-und ausgehenden SEIFE Nachrichten generiert als Folge von aufrufen von Methoden auf dem web-proxy, so kann ich hinzufügen, eine Funktion, um die Benutzeroberfläche, die zeigen, wird die Nachricht nur gesendet/empfangen werden.
Ich schwach erinnern, gibt es zwei Paare, die Erweiterung Punkte, an denen code Hinzugefügt werden kann intecept die Nachricht, aber ich kann mich nicht erinnern, wie das getan wurde. Ich denke, die Beispiele, die ich im Sinn haben, beteiligt Komprimierung ein Teil der Nachricht auf der client-und auf der Rückseite auf dem server, auch wenn in meinem Szenario, ich will speichern, anstatt die Nachricht verändern.
Jede Tipps und Hilfe dankbar angenommen.
(Ich habe teilweise umgesetzt, eine SOAP-Erweiterung. Ich verstehe nicht, wie die ChainStream-Methode funktioniert, und ich bin mir nicht sicher, wie Sie Sie zu Benachrichtigen, einen listener, dass eine soap-Nachricht eingeschlossen wurde (da bin ich nicht die Kontrolle über die Instanziierung des soap-Erweiterung).'
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du bist auf dem richtigen Weg mit der SOAP-Erweiterung. Hast du die Unterlagen und das Beispiel hier? http://msdn.microsoft.com/en-us/library/system.web.services.protocols.soapextension.aspx
Die Idee mit ChainStream ist, dass Sie vergangen, die Netzwerk-stream, der die Anfrage geschrieben, und Sie haben die Möglichkeit, wieder ein anderer Strom. Also, wenn Sie wollen speichern Sie eine Kopie der Anfrage, Rückkehr einen MemoryStream, die die web-Service-client schreibt die Anfrage in und dann in der ProcessMessage-call können Sie kopieren die Daten aus und übergeben Sie es in Ihrer Benutzeroberfläche.
Andere Art und Weise zu erfassen, die XML-Daten geschickt durch die Wireshark Anwendung. Es fängt die Kommunikation-Netzwerk-Karte.
In meinem Fall, als ich einen Dienst, der im Rahmen seiner Ansprache an string PIOSOS. Ich verwendet die Find-Paket, Fenster und durchsucht.
Sich dann die XML.
Siehe Bild.
(Ich weiß ... es ist nicht eine programmatische Art und Weise, aber es hat seinen Wert. Lol)
Ich würde vorschlagen 2 tricks :
Wenn Sie mehr info über diese tricks, lass es mich wissen.
Würden Sie wirklich besser mit WCF als Ihre client-Technologie. Sie konnte dann nutzen Sie einfach die WCF-message-level-tracing-Protokoll der eingehenden und ausgehenden Nachrichten. Dies geschieht einfach durch die Konfiguration.
Gibt es keinen Grund, müssen Sie eine ASMX-client, nur weil Sie ein ASMX service.