it-swarm.com.de

Wie würde ich in C # die SOAP in einem Web-Service-Aufruf verwendet?

Ich habe eine C # -Anwendung, die ein Client für einen Webdienst ist. Eine meiner Anforderungen besteht darin, die Erfassung des von mir gesendeten SOAP zuzulassen, damit ich bei einem Problem entweder den Fehler beheben oder nachweisen kann, dass das Problem bei dem Dienst liegt, den ich anrufe.

Meine WebReference-Proxy-Serviceklasse leitet sich wie gewohnt von System.Web.Services.Protocols.SoapHttpClientProtocol ab. Wenn ich einen Zauberstab hätte, würde ich diese Basisklasse veranlassen, ein Ereignis OnPost zu implementieren, mit dem ich SOAP in meine Protokolle schreiben und fortfahren könnte.

Gibt es eine einfache Möglichkeit, diese Protokollierungsstufe zu erreichen, ohne einen Paket-Sniffer wie WireShark zu betreiben?

15
David Chappelle

Ich denke, was Sie suchen, wird in dieser Frage angesprochen: 

Abrufen von RAW-Seifendaten von einem in ASP.net ausgeführten Webreferenzclient

Es sieht zwar nach viel Code aus.

15
Zachary Yates

Wenn die Anwendung auf Ihrer lokalen Box ausgeführt wird und der Web-Service keine Funkerei ausführt, können Sie Fiddler verwenden. Starten Sie IE, führen Sie Fiddler aus, und Sie werden sehen, dass Ihre Webdienstanrufe auch über den Proxy des Fiddlers gehen.

Ich habe es heute morgen benutzt, um fast dasselbe zu tun. Ich musste nachweisen, dass die Daten, die mein Webservice sendete, nicht fehlerhaft waren.

4
Moose

Um diesen Verkehr in Fiddler zu sehen, verwenden Sie den folgenden Code:

mySoapHttpClientProtocol.Url = mySoapHttpClientProtocol.Url.Replace("localhost", "localhost.fiddler");

Andernfalls umgeht der in Visual Studio integrierte Webserver alle Proxys.

2
bnieland

Werfen Sie einen Blick auf SoapExtensions .

Sie sind das, was Sie brauchen.

1
FlySwat

Gerade "." Fügen Sie die Adresse in Ihrem Endpunkt nach "localhost" ein. wie folgt:

      <endpoint address="http://localhost.:8868/FEInvoice.asmx" binding="basicHttpBinding"
    bindingConfiguration="FEInvoice_Test" contract="EInvoiceIntegration.FEInvoiceSoap"
    name="FEInvoice_Test" />
0
uzay95

Aus irgendeinem Grund zeigte Fiddler meine lokalen Serviceaufrufe nicht an, wenn der ASP.NET Development Server verwendet wurde, der mit Visual Studio geliefert wird. Um dies zu umgehen, habe ich zur Laufzeit die Webdienst-URL in den Fiddler-Port geändert, nur um die SOAP -Nachricht zu erfassen.

Sie können dies vom Direktfenster aus tun, zum Beispiel:

myservice.Url = "localhost: 8888" (oder an welchem ​​Port Sie Fiddler haben)

Ich habe den SoapUI-Client zum Testen der Antworten verwendet.

0
Rob Kent