2009-12-15 6 views
5

Я очень новичок в обмена сообщениями WCF и SOAP, но мне удалось собрать достаточно хороший клиент, который я использую для загрузки новостей из медиа-организации. Я сгенерировал прокси-классы, которые, очевидно, сильно абстрагируются и означают, что я в основном просто создаю объекты, вызывая методы и итерации через результаты.Просмотр необработанного XML-запроса

Моя проблема заключается в том, что у меня есть необработанные XML-примеры того, как должны выглядеть вызовы веб-службы, и я хочу, чтобы они «сравнивали» их с вызовами, которые я делаю. В основном мне нужно убедиться, что вызовы, которые я делаю, совпадают с примерами XML-файлов для целей тестирования.

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

ответ

2

Вы использовали инструмент «Службы отслеживания трассировки» от Microsoft? This MSDN page предоставит вам подробную информацию о том, как его использовать.

+0

Спасибо за ответ, slugster. Я собираюсь взглянуть на это и опубликую, как я иду. – dave

2

Для этого необходимо использовать fiddler в качестве прокси - это позволит вам просматривать исходящие и входящие сообщения между вашим клиентом и службой.

Может еще не говорить из личного опыта, однако члены команды развивающиеся для меня (в прежней жизни) есть - совершенно справедливо - закодированы наши упаковщики службы со встроенной поддержкой для использования прокси-сервера явно для упрощения использования скрипача.

+0

Спасибо за ответ. Проблема с использованием Fiddler заключается в том, что это защищенная SSL-служба, поэтому есть проблемы, связанные с тем, что веб-служба не любит сертификат Fiddler из-за того, что он является непризнанным центром сертификации. Я попробовал переопределить проверку сертификата сервера, но есть что-то, что происходит с веб-службой, что это совсем не нравится. Ответ может заключаться в том, чтобы просто продолжать играть с этим – dave

+0

Вы пробовали Live HTTP-заголовки, плагин Firefox? Я не уверен, поддерживает ли он CA, но стоит сделать это. –

10

Вы можете использовать трассировку WCF для регистрации необработанных XML-сообщений. Ниже это .config позволяет WCF трассировки с сырой регистрацией сообщений:

<configuration> 
    <system.serviceModel> 
    <diagnostics> 
     <messageLogging maxMessagesToLog="30000" 
       logEntireMessage="true" 
       logMessagesAtServiceLevel="true" 
       logMalformedMessages="true" 
       logMessagesAtTransportLevel="true"> 
     </messageLogging> 
    </diagnostics> 
    </system.serviceModel> 
    <system.diagnostics> 
    <sources> 
     <source name="System.IdentityModel" switchValue="Verbose" logKnownPii="true"> 
     <listeners> 
      <add name="xml" /> 
     </listeners> 
     </source> 
     <!-- Log all messages in the 'Messages' tab of SvcTraceViewer. --> 
     <source name="System.ServiceModel.MessageLogging"> 
     <listeners> 
      <add name="xml" /> 
     </listeners> 
     </source> 
     <!-- ActivityTracing and propogateActivity are used to flesh out the 'Activities' tab in 
      SvcTraceViewer to aid debugging. --> 
     <source name="System.ServiceModel" switchValue="Error, ActivityTracing" propagateActivity="true"> 
     <listeners> 
      <add name="xml" /> 
     </listeners> 
     </source> 
     <!-- This records Microsoft.IdentityModel generated traces, including exceptions thrown 
      from the framework. --> 
     <source name="Microsoft.IdentityModel" switchValue="Warning"> 
     <listeners> 
      <add name="xml" /> 
     </listeners> 
     </source> 
    </sources> 
    <sharedListeners> 
     <add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="trace.e2e" /> 
    </sharedListeners> 
    <trace autoflush="true" /> 
    </system.diagnostics> 
</configuration> 

Вы можете прочитать больше о WCF Трассировки из MSDN: Configuring Tracing.

Microsoft предоставляет Service Trace Viewer Tool для чтения файлов .svclog.

Убедитесь, что путь, определенный в initializeData, может быть доступен для записи вашей службой.

0

Вы можете создать свой собственный инспектор сообщений с помощью интерфейса IClientMessageInspector и получить необработанные сообщения как для запроса, так и для ответа.

Вот хороший пост о том, как сделать это ==>http://www.keithelder.net/blog/archive/2008/01/15/How-to-Get-Around-WCFs-Lack-of-a-Preview-Web.aspx

0

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

Смежные вопросы