Ich möchte den tatsächlichen Inhalt der XML-SOAP-Nachricht abrufen, die an den Server über eine SOAP-Webservcie-Referenz in einer .NET-Client-Anwendung gesendet wird.Erhalten Sie tatsächliche SOAP-Nachricht (XML), bevor es von der Clientanwendung
Antwort
Ich habe meinen Kopf auf, wie man den tatsächlichen Inhalt einer SOAP-Nachricht, die an den Server gesendet wird, gesucht.
Schließlich fand ich die Antwort, die Ich mag würde hier mit sehr einfachen Code teilen - basierend auf https://wcfpro.wordpress.com/2011/03/29/iclientmessageinspector/
zunächst ein Windows Forms-Anwendung erstellen und einen Verweis auf einen SOAP-Webservice hinzufügen.
erstellen Sie dann die Klassen angegeben, wie in https://wcfpro.wordpress.com/2011/03/29/iclientmessageinspector/
unterhalb einer Kopie Siehe aus diesem Beitrag
public class MyBehavior : IEndpointBehavior
{
public void AddBindingParameters(
ServiceEndpoint endpoint,
BindingParameterCollection bindingParameters)
{
}
public void ApplyClientBehavior(
ServiceEndpoint endpoint,
ClientRuntime clientRuntime)
{
clientRuntime.MessageInspectors.Add(new MyMessageInspector());
}
public void ApplyDispatchBehavior(
ServiceEndpoint endpoint,
EndpointDispatcher endpointDispatcher)
{
}
public void Validate(
ServiceEndpoint endpoint)
{
}
}
public class MyMessageInspector : IClientMessageInspector
{
public void AfterReceiveReply(ref Message reply, object correlationState)
{
// use 'reply.ToString()' te get content and do something with is
}
public object BeforeSendRequest(ref Message request, IClientChannel channel)
{
// use 'request.ToString()' te get content and do something with is
return null;
}
}
Und jetzt kommt der wichtigste Teil, die mir dauerte eine Weile, um herauszufinden. Wenn Sie Instanz des Webservice erstellen:
MyServiceClient svc = new MyServiceClient();
Dann das Verhalten auf den Dienst mit diesem Code hinzufügen:
svc.ChannelFactory.Endpoint.Behaviors.Add(new MyBehavior());
Und jetzt haben Sie etwas, das Sie beginnen können, mit arbeiten!
- 1. Erhalten tatsächliche Höhe der Ansicht
- 2. Datagridview tatsächliche Bestellung erhalten
- 3. Bemerkenswerter Abschlag. Erhalten Sie tatsächliche Textlänge
- 4. Erhalten Sie die tatsächliche Schreibweise von lib clang cursor/type
- 5. So erhalten Sie das tatsächliche Bild von Picasa mit Gdata
- 6. Erhalten Sie die tatsächliche Größe des empfangenen Pakets
- 7. Erhalten Sie alle Namen von XML-Leitung
- 8. Erhalten Sie bestimmte Teile von XML Antwort?
- 9. Erhalten Sie Ansicht von ViewPager, bevor das Fragment amCreateView endet
- 10. Erhalten tatsächliche Höhe des Dokuments mit jQuery
- 11. Erhalten Sie SOAP XML vor __soapCall?
- 12. Erhalten tatsächliche URL der Datei in Moodle mit Datei-API
- 13. php Passwort verifizieren, bevor Sie es ändern
- 14. Wie erhalten Sie die css-Eigenschaften, bevor Sie dom hinzufügen?
- 15. einen Blick Messung, bevor es
- 16. Clientanwendung, die doppelte Berichte empfängt
- 17. Daten von XML-Knoten erhalten
- 18. Validieren Sie Schlüssel/IV, bevor Sie mit AesManaged entschlüsseln? oder vermeiden Sie CryptographicException, bevor es auftritt?
- 19. Wie Abfangen von Ausnahme von UserNamePasswordValidator in WCF-Clientanwendung?
- 20. So erhalten Sie XML-Text als Eingangsstrom
- 21. Erhalten Sie ein DataSet von SOAP als XML zurückgegeben?
- 22. Asp.Net System.Web.Routing Finden Sie tatsächliche .aspx Seite
- 23. Hot, IP der Anfrage zu erhalten, bevor Socket-Verbindung akzeptiert?
- 24. Wie erhalten, bevor Limit zählt in der Mongo Aggregation Pipeline
- 25. Erhalten Sie XML-Attribut mit ActionScript 2.0
- 26. RegExp: get Wort ohne Wort, bevor es
- 27. Erhalten Sie große Künstler Bild von last.fm xml (api artist.getinfo)
- 28. Erhalten Sie Attributwerte von übereinstimmenden XML-Knoten mit XPath-Abfrage
- 29. Erhalten tatsächliche Breite des Textes in einer bestimmten Schriftartkonfiguration?
- 30. Erhalten Sie Eingabe min Wert von xml zu xslt