Ich bin ein Fremdanbieter .NET WebService in meiner Clientanwendung verbrauchen. Zu Debug-Zwecken möchte ich die SOAP-Requests erfassen, die von meinem Server gesendet werden. Wie würde ich das machen? Dies geschieht in .NET 2.0 ohne die Verwendung von WCF oder WSE..NET-Protokoll Soap-Anforderung auf Client
Antwort
Wenn es für Debug-Zwecke ist würde ich konfigurieren Sie einfach die Web-Anfrage einen Proxy zu verwenden und die gesamte Anfrage senden obwohl Fiedler (http://www.fiddlertool.com), dann können Sie genau sehen, was über den Draht übertragen wird immer.
Es gibt viele Optionen, die Sie verwenden können. Es gibt sicherlich einige kommerzielle Tools (wie SOAPScope), aber wenn Sie nur den rohen Inhalt der Anfragen/Antworten erfassen wollen, gibt es neben Fiddler noch einige andere Tools (die Walden bereits erwähnt hat).
Ich persönlich war lange Zeit Benutzer von Simon Fell TcpTrace und YATT.
Wenn Sie daran interessiert sind, den Code so zu instrumentieren, dass er es alleine macht (zB indem Sie alles auf eine Datei oder etwas protokollieren), dann sollten Sie in die Implementierung eines SoapExtension auf Ihrem Server schauen.
Sie können eine SoapExtension verwenden, um die Soap-Aufrufe zu protokollieren.
habe ich the Web Service, SOA and SOAP Testing Tool - soapUI mit gutem Erfolg in der Vergangenheit verwendet.
-Edoode
Ich schrieb einen Beitrag über das vor einer Weile dem Titel "Logging SOAP Messages in .NET".
Der einfachste Weg ist Verwenden Sie die Tools bereits mit .NET zur Verfügung gestellt.
1. erweitern die Klasse SoapExtension
.
2. Überschreibung der Methode ProcessMessage
eine vollständige Ausgabe Ihrer Soap Anfrage zu bekommen, dann Ausgabe dieser Informationen in einer Textdatei oder Ereignisprotokoll.
public class SoapMessageLogger : SoapExtension
{
//…
public override void ProcessMessage(SoapMessage message)
{
switch(message.Stage)
{
case SoapMessageStage.BeforeDeserialize:
LogResponse(message); break;
case SoapMessageStage.AfterSerialize:
LogResponse(message); break;
// Do nothing on other states
case SoapMessageStage.AfterDeserialize;
case SoapMessageStage.BeforeSerialize;
default: break;
}
}
//…
}
Vielleicht wireshark? Ich verwende es immer, um den Verkehr meiner Anwendungen zu erfassen.
Ich habe über 6 verschiedene Möglichkeiten, dies in Code zu tun, bevor aufgegeben und versuchen Geiger. Hätte ich darüber gelesen und gesehen, dass es verschlüsselten Verkehr unterstützt, hätte ich damit zuerst angefangen. – carson