WCF - Просмотр XML-запроса / ответа на безопасный веб-сервис - PullRequest
6 голосов
/ 11 марта 2010

У меня есть приложение службы WCF, и в этом приложении я выполняю звонки в сторонние веб-службы по безопасному соединению.

Я пытался просматривать потоки ответов на запросы, используя fiddler, но я разочаровался в этом после попытки более половины дня применить все, что я мог найти через Интернет. У него проблема с сертификатами, хотя я сделал больше сертификатов fiddlers для доверенной зоны.

Какая моя лучшая ставка - просто просмотреть запросы и ответы в формате xml, которые я отправляю на этот сторонний веб-сервис?

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

Простой способ сделать это, пожалуйста?

EDIT:

В данный момент мне даже не нужно использовать трассировку. Мне просто нужно увидеть сериализованный вывод моего запроса / ответа. Даже если я могу сделать это с помощью отладчика Visual Studio или тому подобное, это поможет.

Ответы [ 3 ]

7 голосов
/ 11 марта 2010

Использование WCF Tracing - работает очень хорошо и поставляется с удобной утилитой просмотра трассировки .

Вы можете настроить множество опций - но по своей сути вам придется добавить что-то вроде этого в вашу службу WCF и клиентские конфигурации:

<configuration>
   <system.diagnostics>
      <sources>
            <source name="System.ServiceModel" 
                    switchValue="Information, ActivityTracing"
                    propagateActivity="true">
            <listeners>
               <add name="traceListener" 
                   type="System.Diagnostics.XmlWriterTraceListener" 
                   initializeData= "c:\log\Traces.svclog" />
            </listeners>
         </source>
      </sources>
   </system.diagnostics>
</configuration>

Существует множество "слушателей трассировки" из коробки - один пишет в консоль вывода в Visual Studio, этот здесь создает XML-файлы, или вы можете хранить вещи в таблице базы данных SQL Server - и весь механизм расширяемый, вы также можете написать своих собственных слушателей трассировки!

Также см. Здесь: Использование WCF Trace и здесь FAQ по трассировке WCF для получения дополнительной информации.

4 голосов
/ 12 марта 2010

Поскольку я пытался читать мыльные сообщения в и из веб-службы asmx, на которую ссылается мое приложение WCF, решением моей проблемы было создание класса, который наследуется от System.Web.Services.Protocols.SoapExtension, зарегистрируйте этот класс в web.config, чтобы весь трафик проходил через этот класс и просматривался.

Ничего из этого сообщения не будет отображаться на следах WCF, так что этого было недостаточно. Однако было полезно узнать, что теперь я могу видеть все, что происходит между моим приложением службы wcf и веб-приложением ..

Эта статья дала мне понять: Как захватить мыльные конверты при использовании веб-службы

2 голосов
/ 11 марта 2010

Добавьте это в ваш app.config:

<system.diagnostics>
<sources>
  <source name="System.ServiceModel.MessageLogging">
    <listeners>
      <add name="messages" type="System.Diagnostics.XmlWriterTraceListener" initializeData="messages.svclog" />
     </listeners>
  </source>
</sources>

<system.serviceModel>
<diagnostics>
  <messageLogging
       logEntireMessage="true"
       logMalformedMessages="true"
       logMessagesAtServiceLevel="true"
       logMessagesAtTransportLevel="false"
       maxMessagesToLog="-1"/>
</diagnostics>

Он будет записывать все сообщения в messages.svclog. Вы можете просмотреть их.

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