Подтвердить что ты не робот

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

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

UPDATE:

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

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;

все еще ничего

4b9b3361

Ответ 1

Я нашел решение на этой странице 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.

Ответ 2

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

Я обойду это просто добавив "точку" к 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

Прекрасно работает!

Ответ 3

Вы можете найти ответ в следующей публикации fooobar.com/questions/58631/...

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

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

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

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

Ответ 4

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

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

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

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

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

Ответ 5

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

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