Журнал .NET или просмотр вызова/ответа веб-службы SOAP

Каков наилучший способ проверки вызовов и ответов веб-службы в .NET?
Я взаимодействую с веб-службой, написанной на Perl, и у меня возникают проблемы.
Как я могу зафиксировать текст вызова и ответ?

ОБНОВЛЕНИЕ:
На основе комментария для уточнения: я хотел бы сделать это через .NET, чтобы я мог зарегистрировать его или отправить по электронной почте, когда возникнет проблема.


person BuddyJoe    schedule 19.06.2009    source источник


Ответы (4)


Вы можете сделать это, создав SoapExtension и включив его в своем клиенте веб-службы:

Класс System.Web.Services.Protocols.SoapExtension ( MSDN)

Ссылка выше предоставляет скелет примера кода, который записывает запросы/ответы в файл.

Чтобы включить в своем приложении, добавьте следующее в ваш web.config или app.config:

<webServices>
    <soapExtensionTypes>
        <add type="YourNamespace.TraceExtension, AssemblyName" 
             priority="0" group="High"/>
    </soapExtensionTypes>
</webServices>

Мое собственное расширение трассировки SOAP реализовано в собственном проекте/сборке. Всякий раз, когда мне нужно отладить запрос/ответ, я просто помещаю DLL в папку приложения (/bin для ASP.NET) и добавляю ссылку в файл конфигурации, как указано выше.

Например:

<webServices>
   <soapExtensionTypes>
      <add 
         type="DebugTools.SOAP.SOAPTrace.SoapTraceExtension, DebugTools.SOAP" 
         priority="0" group="High"/>
   </soapExtensionTypes>
</webServices>

DebugTools.SOAP.SOAPTrace — это пространство имен SoapTraceExtension
DebugTools.SOAP — это имя сборки, содержащей код трассировки мыла.

person Kev    schedule 19.06.2009
comment
Довольно аккуратно, никогда такого не видел. Определенно удобно в средах, где вы не можете установить инструменты. - person Wyatt Barnett; 20.06.2009
comment
Да... приятно, что вы можете вести журнал без необходимости изменять код приложения. - person Kev; 20.06.2009
comment
Милая! Собираюсь попробовать это. Спасибо. +1. Возвратит обратную связь. - person BuddyJoe; 20.06.2009
comment
Спасибо... это было решением довольно длительного поиска. - person Kyle B.; 27.09.2009

Fiddler — ваш лучший друг в шатком мире веб-сервисов.


Нет, он ничего не делает внутри кода, как указано. Вы также не хотите, чтобы отладка НЕ ​​ДОЛЖНА изменять семантику процесса, или вы отлаживаете свой отладочный код.

Кроме того, я люблю Wireshark, но fiddler немного лучше подходит для работы с HTTP, поскольку он предназначен для работы с HTTP. Если я хватаю байты с сети, это полностью wireshark.

person Wyatt Barnett    schedule 19.06.2009
comment
Fiddler действует как прокси между любым процессом на вашем локальном компьютере и сервером, с которым вы разговариваете (показывая весь промежуточный трафик) - person Jason Watts; 20.06.2009
comment
Каков вариант использования трафика в вашем коде? Вы создаете версию скрипача WPF? - person Jason Watts; 20.06.2009
comment
Я знаю, как работает Скрипач. Просто я ищу что-то, что я могу использовать в реальном коде. Сообщите мне о странных результатах... и, возможно, предупредите меня. Не знаю, как заставить Скрипача сделать это. - person BuddyJoe; 20.06.2009
comment
Попался. Это совсем не ясно из вопроса, возможно, вы захотите его отредактировать. - person Wyatt Barnett; 20.06.2009

Лично мне нравится использовать анализатор пакетов, например Wireshark. Это отличный инструмент для проверки любого сетевого трафика.

person Jacob    schedule 19.06.2009

В веб-службе или клиенте WCF можно просто настроить трассировку и/или ведение журнала сообщений. Это можно сделать во время выполнения без изменения кода.

person John Saunders    schedule 20.06.2009
comment
Я использую веб-сервис, написанный на Perl (не по своему выбору). Клиент написан на .NET 3.5. Могу ли я по-прежнему пользоваться трассировкой/логированием на клиенте? - person BuddyJoe; 06.07.2009
comment
Нет, ты не можешь. Пожалуйста, отредактируйте свой ответ, чтобы сказать, что ваш клиент - PERL. Тот факт, что вы сказали, что хотели бы сделать это в .NET, заставил меня думать, что клиент был .NET. - person John Saunders; 06.07.2009