Question

J'ai une application interne à l'entreprise qui consomme actuellement 10 différents services web.Ils sont consommés par old style "Références Web" au lieu d'utiliser WCF.

Le problème que je vais avoir est d'essayer de travailler avec les autres équipes de la société qui sont de création de services, je suis à la consommation.J'ai trouvé j'ai besoin de capturer l'exacte des messages SOAP que je suis l'envoi et la réception.Je l'ai fait par la création d'un nouvel attribut qui s'étend SoapExtensionAttribute.Je puis juste ajouter que l'attribut de la méthode de service dans le générés de Référence.cs fichier.Cela fonctionne, mais c'est douloureux pour deux raisons.Tout d'abord, c'est un fichier généré, donc tout ce que j'y fais peut être écrasé.Deuxièmement, j'ai oublier de supprimer l'attribut avant de vérifier dans le fichier.

Est-Il une meilleure façon de capturer l'exacte des messages SOAP que je suis l'envoi et la réception?

Était-ce utile?

La solution

Cela semble être une question qui revient souvent, comme je lui ai demandé et il a dit d'aller ici.

Vous n'avez pas à modifier l'généré Reference.cs.Vous pouvez faire référence à l'extension de votre application app.config.

Autres conseils

Est-ce une webapp?

Placez votre SoapExtension code dans un HTTPModule, et injecter de l'enveloppe SOAP dans le HTTPOutput flux.

De cette façon, lorsqu'en mode debug, j'ai pensé à quelque chose comme un réductible div sur le haut de la page qui répertorie tous les SAVON de communication pour cette page.

J'ai un HTTPModule déjà construit qui fait cela, je vais foirer mon spécifiques à la société de l'information et de poster les goodies plus tard aujourd'hui.

Aussi, découvrez SoapUI, c'est un outil pratique.

Vous pouvez le faire en créant un SoapExtention.Vérifier cet article.

J'ai utilisé le code suivant est un exemple de la façon dont j'ai capturé les requêtes SOAP dans une application écrite à un moment de retour.

<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

Réglage de l'attribut conditionnel comme je n'ai fait que le compilateur ignorer l'appel de la méthode pour construire tous les types autres que de débogage.

Désolé pour le VB, il est forcé sur moi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top