Запрос мыльного журнала .NET на клиенте - PullRequest
7 голосов
/ 29 сентября 2008

Я использую стороннее .NET WebService в моем клиентском приложении. В целях отладки я хочу перехватывать SOAP-запросы, отправляемые с моего сервера. Как бы я поступил так? Это делается в .NET 2.0 без использования WCF или WSE.

Ответы [ 6 ]

11 голосов
/ 24 ноября 2010

Я недавно об этом написал пост под названием " Запись сообщений SOAP в .NET ".

Самый простой способ - использовать инструменты, уже поставляемые с .NET .

1. Расширить класс SoapExtension.

2. переопределить метод ProcessMessage, чтобы получить полный вывод вашего запроса на мыло, а затем вывести эту информацию в текстовый файл или журнал событий.

public class SoapMessageLogger : SoapExtension
{
  //…
  public override void ProcessMessage(SoapMessage message)
  {
    switch(message.Stage)
    {
      case SoapMessageStage.BeforeDeserialize:
      LogResponse(message); break;
      case SoapMessageStage.AfterSerialize:
      LogResponse(message); break;
      // Do nothing on other states
      case SoapMessageStage.AfterDeserialize;
      case SoapMessageStage.BeforeSerialize;
      default: break;
    }
  }
  //…
}
5 голосов
/ 29 сентября 2008

Если это для целей отладки, я бы просто настроил веб-запрос на использование прокси-сервера и отправил весь запрос через fiddler (http://www.fiddlertool.com), тогда вы можете точно видеть, что передается по проводам.

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

Есть много вариантов, которые вы можете использовать. Конечно, для этого есть несколько коммерческих инструментов (например, SOAPScope), но если вы просто хотите получить необработанное содержимое запросов / ответов, есть несколько инструментов, кроме Fiddler (о котором Уолден уже упоминал).

Лично я долгое время пользовался TcpTrace и YATT Саймона Фелла.

Если вы заинтересованы в том, чтобы на самом деле инструментировать код, чтобы он мог делать это самостоятельно (скажем, записывая все в файл или что-то в этом роде), то вам может потребоваться реализация SoapExtension на вашем сервере.

0 голосов
/ 18 октября 2011

Может быть wireshark ? Я всегда использую его для захвата трафика моих приложений.

0 голосов
/ 19 января 2009

Я использовал инструмент тестирования веб-сервисов, SOA и SOAP - soapUI с большим успехом в прошлом.

-Edoode

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

Вы можете использовать SoapExtension для регистрации вызовов Soap.

http://msdn.microsoft.com/en-us/magazine/cc164007.aspx

...