Domanda

Ho un'organizzazione interna app che attualmente consuma 10 diversi servizi web.Essi sono consumati via vecchio stile "Riferimenti Web" invece di usare WCF.

Il problema che sto avendo è di provare a lavorare con le altre squadre della società, che sono la creazione di servizi di sto consumando.Ho scoperto che avevo bisogno di catturare l'esatta messaggi SOAP che io sono l'invio e la ricezione.Ho fatto questo con la creazione di un nuovo attributo che si estende SoapExtensionAttribute.Ho poi basta aggiungere l'attributo per il metodo di servizio nel generato Riferimento.cs file.Questo funziona, ma è doloroso per due motivi.Prima di tutto, è un file generato così faccio qualcosa in non ci può essere sovrascritto.Secondo, ho ricordarsi di togliere l'attributo prima di archiviare il file.

C'è un modo migliore per catturare l'esatta messaggi SOAP che io sono l'invio e la ricezione?

È stato utile?

Soluzione

Questo sembra essere un problema comune, come ho appena chiesto e mi è stato detto di guardare qui.

Non è necessario modificare il generati Reference.cs.È possibile fare riferimento all'estensione dell'applicazione app.config.

Altri suggerimenti

Questa è una webapp?

Posizionare il SoapExtension codice in un HTTPModule, e iniettare la busta SOAP in HTTPOutput stream.

In questo modo, quando in modalità di debug, mi immagino qualcosa di simile a un pieghevole div in alto della pagina con l'elenco di tutte le SOAP di comunicazione per la pagina.

Ho un HTTPModule già costruito che fa questo, vado a togliere la mia azienda informazioni specifiche e di postare le chicche più tardi di oggi.

Inoltre, controllare SoapUI, è un utile strumento.

È possibile farlo attraverso la creazione di un SoapExtention.Controllare questo articolo.

Ho usato il seguente codice è un esempio di come ho catturato le richieste SOAP in una applicazione scritta un po ' indietro.

<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

Impostazione dell'attributo condizionale come ho fatto io fa il compilatore ignora la chiamata al metodo per costruire tutti gli altri tipi di debug.

Mi dispiace per il VB, è costretto su di me.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top