Как использовать Fiddler для мониторинга сервиса WCF - PullRequest
102 голосов
/ 07 января 2011

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

Ответы [ 8 ]

140 голосов
/ 22 сентября 2011

Вы должны добавить это в свой web.config

<system.net>
  <defaultProxy>
    <proxy bypassonlocal="False" usesystemdefault="True" proxyaddress="http://127.0.0.1:8888" />
  </defaultProxy>
</system.net>
  1. затем запустите Fiddler на машине WEBSERVER.
  2. Нажмите Инструменты | Параметры Fiddler => Подключения => настроить порт на 8888. (разрешить удаленный доступ, если вам это нужно)
  3. Хорошо, затем из меню «Файл» захватить трафик.

Вот и все, но не забудьте удалить строки web.config после закрытия фиддлера, потому что, если вы этого не сделаете, произойдет ошибка.

Ссылка: http://fiddler2.com/documentation/Configure-Fiddler/Tasks/UseFiddlerAsReverseProxy

8 голосов
/ 05 мая 2014

Только что возникла эта проблема, для меня сработало использование localhost.fiddler:

 <endpoint address="http://localhost.fiddler/test/test.svc"
            binding="basicHttpBinding" 
            bindingConfiguration="customBinding" 
            contract="test" 
            name="customBinding"/>
8 голосов
/ 07 января 2011

Fiddler слушает исходящие запросы, а не входящие запросы, поэтому вы не сможете отслеживать все запросы, поступающие в ваш сервис, с помощью Fiddler.

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

Если вам нужен более мощный инструмент (но более сложный в использовании), который позволит вам отслеживать ВСЕ входящие запросы, вы должны проверить WireShark.

Редактировать

Я исправлен.Спасибо Эрику Лоу за публикацию инструкций по настройке Fiddler в качестве обратного прокси !

6 голосов
/ 18 ноября 2015

Объединение предостережений, упомянутых в комментариях / ответах, для нескольких вариантов использования.

В основном см. http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/ConfigureDotNETApp

  • Запустите Fiddler перед вашим приложением
  • В консольном приложении вам может не потребоваться указывать proxyaddress:

    <proxy bypassonlocal="False" usesystemdefault="True" />
    
  • В веб-приложении / чем-то, размещенном в IIS, необходимо добавить proxyaddress:

    <proxy bypassonlocal="False" usesystemdefault="True" proxyaddress="http://127.0.0.1:8888" />
    
  • Когда .NET делает запрос (через служебный клиент или HttpWebRequest и т. Д.), Он всегда будет обходить прокси-сервер Fiddler для URL-адресов, содержащих localhost, поэтому вы должны использовать псевдоним, например имя компьютера, или создать что-то в ваш файл 'hosts' (вот почему работает что-то вроде localhost.fiddler или http://HOSTNAME)
  • Если вы укажете proxyaddress, вы должны удалить его из конфигурации, если Fiddler не включен, или любые запросы, которые делает ваше приложение, приведут к исключению, например:

    Невозможно установить соединение, поскольку целевой компьютер активно отказался от него. 127.0.0.1:8888

  • Не забудьте использовать преобразования конфигурации для удаления раздела прокси в рабочей среде
4 голосов
/ 30 июля 2013

Так просто, все, что вам нужно, это изменить адрес в клиенте конфигурации: вместо «localhost» измените имя машины или IP

1 голос
/ 08 января 2011

Это просто, если у вас есть контроль над клиентом, который отправляет сообщения. Все, что вам нужно сделать, это установить HttpProxy в классе обслуживания на стороне клиента.

Я сделал это, например, чтобы отследить клиент веб-службы, работающий на смартфоне. Я установил прокси на этом клиентском подключении к IP / порту Fiddler, который работал на ПК в сети. Затем приложение для смартфона отправило все свои исходящие сообщения в веб-службу через Fiddler.

Это сработало отлично.

Если ваш клиент - клиент WCF, см. в этих вопросах и ответах , чтобы узнать, как установить прокси.

Даже если у вас нет возможности изменить код клиентского приложения, вы можете установить прокси-сервер в административном порядке, в зависимости от стека веб-сервисов, используемого вашим клиентом.

0 голосов
/ 13 марта 2018

Стандартная трассировка / диагностика WCF

Если по какой-то причине вы не можете заставить работать Fiddler или предпочитаете регистрировать запросы другим способом, другой вариант - использовать стандартный WCFфункциональность трассировки.Это создаст файл с хорошим средством просмотра.

Документы

См. https://docs.microsoft.com/en-us/dotnet/framework/wcf/samples/tracing-and-message-logging

Конфигурация

Добавьте следующее в вашу конфигурацию, убедитесь, что c:\logs существует, перестроите и сделайте запросы:

  <system.serviceModel>
    <diagnostics>
      <!-- Enable Message Logging here. -->
      <!-- log all messages received or sent at the transport or service model levels -->
      <messageLogging logEntireMessage="true"
                      maxMessagesToLog="300"
                      logMessagesAtServiceLevel="true"
                      logMalformedMessages="true"
                      logMessagesAtTransportLevel="true" />
    </diagnostics>
  </system.serviceModel>

  <system.diagnostics>
    <sources>
      <source name="System.ServiceModel" switchValue="Information,ActivityTracing"
        propagateActivity="true">
        <listeners>
          <add name="xml" />
        </listeners>
      </source>
      <source name="System.ServiceModel.MessageLogging">
        <listeners>
          <add name="xml" />
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add initializeData="C:\logs\TracingAndLogging-client.svclog" type="System.Diagnostics.XmlWriterTraceListener"
        name="xml" />
    </sharedListeners>
    <trace autoflush="true" />
  </system.diagnostics>
0 голосов
/ 23 июля 2013

Я использовал инструмент Wire Shark для мониторинга звонков от приложения Silver Light в браузере к сервису.* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 100 *).

...