Как использовать Fiddler для отладки трафика из любого приложения (например. Приложение C#/WPF)

Я пытаюсь отладить, что не так с моими HTTP-запросами от еще один вопрос здесь на SO. Поэтому я немного прочитал о Fiddler и хотел использовать его для отладки моей проблемы. Но я не могу получить трафик из моего приложения WPF, чтобы пройти через Fiddler. Я считаю, что мне нужно настроить прокси. Я использую WebClient для базового примера, но я думаю, что мне понадобится WebRequest позже. Но сейчас, с помощью простого WebClient, как я могу заставить его пройти через Fiddler (я считаю, что должен установить прокси на localhost:8888)?

обновление:

Я не знаю, правильно ли я поступил или нет, но я попытался

var wc = new WebClient();
WebProxy proxy = new WebProxy();
proxy.Address = new Uri("http://localhost:8888");
wc.Proxy = proxy;

, но не удалось - я не вижу никакого движения в Fiddler

я попробовал ...

var wc = new WebClient();
WebProxy proxy = new WebProxy("127.0.0.1", 8888);
wc.Proxy = proxy;

еще ничего

5 ответов


Я нашел решение в это fiddler2.com страница

почему я не вижу входящего и исходящего трафика http://localhost или http://127.0.0.1?

Internet Explorer и .NET Framework жестко закодированы, чтобы не отправлять запросы на Localhost через любые прокси, и как прокси, Fiddler будет не получают такого трафика.

самым простым обходным путем является использование имени компьютера в качестве имени хоста вместо Localhost или 127.0.0.1. Так, например, вместо удара http://localhost:8081/mytestpage.aspx, вместо посещения http://machinename:8081/mytestpage.aspx.


может быть, немного поздно, но...

я обойду это, просто добавив "точку" к localhost, поэтому вместо доступа localhost, Я пытаюсь получить доступ к localhost. (обратите внимание на точку в конце имени хоста)

должное: Я получил этот необычный совет от этой темы http://www.west-wind.com/weblog/posts/2009/Jan/14/Monitoring-HTTP-Output-with-Fiddler-in-NET-HTTP-Clients-and-WCF-Proxies#596591

работает отлично!


вы можете найти ответ в посте ниже https://stackoverflow.com/a/7506427/471499

в нем перечислены, что вам нужно добавить это в свой веб.config или App.Config

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

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

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


все время я использую ниже конфигурацию для перенаправления сетевых HTTP-вызовов для передачи через прокси-сервер fiddler из моих приложений.

это работает во всех видах приложений .NET (который имеет либо web.config или app.config файл) и в fiddler лучше всего отключить Capture Traffic возможность избежать захвата общего трафика из всех запущенных приложений. Клавиша быстрого доступа для этого F12.

<system.net>
    <defaultProxy>
        <proxy proxyaddress="http://localhost:8888/" />
    </defaultProxy>
</system.net>

это ценная конфигурация, если у вас есть третья сторона сборки, в которых у вас нет возможности изменить код, вызывающий URL-адрес.

надеюсь, это кому-то поможет.


"IIS Express не будет получать трафик на machinename, поэтому вместо этого маршрут к localhost.скрипач fiddler2.com/documentation/Configure-Fiddler/Troubleshooting / ... - robrich May 9 '13 at 6: 02"

Робрич выше сделал это правильно. Это единственное, что сработало, поскольку я могу использовать только IIS Express.