Мыльная регистрация в .net - PullRequest
       20

Мыльная регистрация в .net

4 голосов
/ 10 сентября 2008

У меня есть внутреннее корпоративное приложение, которое в настоящее время использует 10 различных веб-сервисов. Они потребляются через старый стиль "Web References" вместо использования WCF.

Проблема в том, что я пытаюсь работать с другими командами в компании, которые занимаются созданием услуг, которые я использую. Я обнаружил, что мне нужно захватить точные сообщения SOAP, которые я отправляю и получаю. Я сделал это, создав новый атрибут, который расширяет SoapExtensionAttribute. Затем я просто добавляю этот атрибут к методу службы в сгенерированном файле Reference.cs. Это работает, но больно по двум причинам. Во-первых, это сгенерированный файл, поэтому все, что я там делаю, можно перезаписать. Во-вторых, я должен не забыть удалить атрибут перед проверкой в ​​файле.

Есть ли лучший способ для захвата точных сообщений SOAP, которые я отправляю и получаю?

Ответы [ 5 ]

4 голосов
/ 21 ноября 2008

Это, кажется, распространенный вопрос, как я только что задал, и мне сказали посмотреть здесь .

Вам не нужно редактировать сгенерированный Reference.cs. Вы можете сослаться на расширение в app.config.

вашего приложения.
3 голосов
/ 10 сентября 2008

Это веб-приложение?

Поместите код SoapExtension в модуль HTTPModule и вставьте конверт SOAP в поток HTTPOutput.

Таким образом, в режиме отладки я представляю что-то вроде разборного элемента div в верхней части страницы, в котором перечислены все соединения SOAP для этой страницы.

2 голосов
/ 10 сентября 2008

У меня уже создан HTTPModule, который делает это, я вычеркну информацию о моей компании и выложу вкусности позже сегодня.

Также обратите внимание на SoapUI, удобный инструмент.

1 голос
/ 10 сентября 2008

Вы можете сделать это, создав SoapExtention. Проверьте эту статью .

0 голосов
/ 10 сентября 2008

Я использовал следующий код - пример того, как я перехватывал запросы SOAP в приложении, написанном некоторое время назад.

<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

Установка условного атрибута, как я сделал, заставляет компилятор игнорировать вызов метода для всех типов сборки, кроме отладки.

Извините за В.Б., он навязан мне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...