2011-01-07 4 views
100

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

+3

службы розыска WCF довольно хороши сами по себе, в том числе хороший GUI для их просмотра. http://msdn.microsoft.com/en-us/library/ms751526.aspx – kenny

ответ

8

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

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

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

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

я исправлюсь. Спасибо Eric Law за размещение указаний configuring Fiddler to be a reverse proxy!

+0

Спасибо за информацию. Мне нужно просмотреть структуру запроса, похожую на страницу описания для служб asmx. У WCF нет такой опции. – Quadwwchs

+9

Это не совсем точно (и «власть» субъективна, поскольку WireShark не может изменить трафик). См. Http://www.fiddler2.com/fiddler/help/reverseproxy.asp для получения дополнительной информации о том, как прослушивать входящий трафик. – EricLaw

+0

Эрик. Я предлагаю вам сказать, что в отдельном ответе. – Cheeso

1

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

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

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

Если ваш клиент является клиентом WCF, см. this Q&A о том, как установить прокси-сервер.

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

134

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

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

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

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

+4

Это сработало отлично для меня - спасибо! –

+1

Спасибо, это мне тоже помогло. Моя ошибка заключалась в том, чтобы не указывать адрес 'http: //' в прокси-адресе. Все остальное было таким же, как вы уже упоминали. –

+1

Это не сработало для меня. Моя ситуация: сервер IIS7.5, клиент - консольное приложение. В моем консольном приложении я вызвал метод WebService, который развернут на IIS7.5 на моем компьютере разработки. Замена «localhost» с моим именем компьютера работал для меня. – york

0

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

Это позволяет вам отслеживать весь контент запроса и ответа.

4

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

8

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

<endpoint address="http://localhost.fiddler/test/test.svc" 
      binding="basicHttpBinding" 
      bindingConfiguration="customBinding" 
      contract="test" 
      name="customBinding"/> 
+1

вам нужно убедиться, что для этого работает скрипач. – Shekhar

5

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

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

  • Start Скрипач до вашего приложения
  • В консольного приложения, то, возможно, не нужно указать 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, поэтому вы должны использовать псевдоним, например, имя машины или что-то сделать в своем " файл хозяев (который почему-то вроде localhost.fiddler или http://HOSTNAME работ)
  • Если указать proxyaddress, вы должны удалить его из конфигурации, если Скрипач не включен, или любые запросы ваших приложение делает сгенерирует исключение, как:

    Невозможно установить соединение, поскольку целевая машина ac тельно отказался это 127.0.0.1:8888

  • Не забудьте использовать config transformations удалить раздел прокси в производстве
Смежные вопросы