Frage

Ich habe eine interne Unternehmensanwendung, die derzeit 10 verschiedene Webdienste nutzt.Sie werden über „Webreferenzen“ im alten Stil statt über WCF genutzt.

Das Problem, das ich habe, besteht darin, dass ich versuche, mit den anderen Teams im Unternehmen zusammenzuarbeiten, die die von mir genutzten Dienste erstellen.Ich habe festgestellt, dass ich die genauen SOAP-Nachrichten erfassen muss, die ich sende und empfange.Dazu habe ich ein neues Attribut erstellt, das SoapExtensionAttribute erweitert.Anschließend füge ich dieses Attribut einfach zur Dienstmethode in der generierten Datei Reference.cs hinzu.Das funktioniert, ist aber aus zwei Gründen schmerzhaft.Erstens handelt es sich um eine generierte Datei, sodass alles, was ich darin mache, überschrieben werden kann.Zweitens muss ich daran denken, das Attribut zu entfernen, bevor ich die Datei einchecke.

Gibt es eine bessere Möglichkeit, die genauen SOAP-Nachrichten zu erfassen, die ich sende und empfange?

War es hilfreich?

Lösung

Dies scheint eine häufig gestellte Frage zu sein, wie ich es gerade gefragt und mir wurde gesagt, zu sehen? hier .

Sie müssen nicht die erzeugte Reference.cs bearbeiten. Sie können die Erweiterung in Ihrer Anwendung app.config verweisen.

Andere Tipps

Ist das ein Webapp?

Zeigen Sie Soapextension-Code in einem Httpmodule und injiziert, um den SOAP-Umschlag in den HTTPOutput Stream.

So, wenn im Debug-Modus, Ich stelle mir so etwas wie ein zusammenklappbares div auf der Oberseite der Seite, die alle SOAP-Kommunikation für diese Seite aufgelistet sind.

ich ein Httpmodule bereits gebaut haben, dass dies der Fall ist, werde ich mein Unternehmen spezifische Informationen abzustreifen und die Leckereien im Laufe des Tages veröffentlichen.

Überprüfen Sie auch, SoapUI, es ist ein praktisches Werkzeug.

Sie können dies tun, indem Sie eine SoapExtention zu schaffen. Prüfen Sie diesem Artikel .

Ich habe die folgende Code ist ein Beispiel dafür, wie ich SOAP-Anforderungen in einer Anwendung erfasst vor einiger Zeit geschrieben.

<System.Diagnostics.Conditional("DEBUG")> _
    Private Sub CheckHTTPRequest(ByVal functionName As String)
        Dim e As New UTF8Encoding()

        Dim bytes As Long = Me.Context.Request.InputStream.Length
        Dim stream(bytes) As Byte
        Me.Context.Request.InputStream.Seek(0, IO.SeekOrigin.Begin)
        Me.Context.Request.InputStream.Read(stream, 0, CInt(bytes))

        Dim thishttpRequest As String = e.GetString(stream)

        My.Computer.FileSystem.WriteAllText("D:\SoapRequests\" & functionName & ".xml", thishttpRequest, False)

    End Sub

Zur Einstellung der bedingten Attribute wie ich macht tat der Compiler den Methodenaufruf ignorieren für alle Arten bauen andere als debug.

Sorry für die VB, ist es mir aufgezwungen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top