Как я могу отследить запрос HttpClient с помощью скрипача или любого другого инструмента?
Я использую HttpClient для отправки запроса одному из веб-сервиса api, к которому у меня нет доступа, и мне нужно отслеживать фактический поток запросов, поступающий на сервер от моего клиента.
Есть ли способ подключить Fiddler для прослушивания запросов?
Я использую класс System.Net.Http.HttpClient для отправки запроса.
Обновление: теперь мы пытаемся улучшить этот вопрос, поскольку я не мог получить то, что искал.
Я использую приложение .Net Client для подключения к веб-службе, размещенной на моем собственном канале IIS через HTTP. Я уже давно отлаживал скрипт с веб-сайтом, размещенным на моем IIS, и наблюдал за трафиком, созданным между моим браузером и веб-сайтом. Но когда дело доходит до просмотра трафика, созданного клиентской программой .Net, разговаривающей с веб-службой с использованием класса HttpClient, странно, что скрипач, похоже, не может использовать этот трафик и ничего не показывает. Является ли .Net HttpClient минуя API WinInet для подключения к службе, которая приводит к тому, что скрипач не может смотреть трафик?
Ответы
Ответ 1
Вообще говоря, просто запуск Fiddler до вашего приложения достаточно. Вы не объяснили, что вы пробовали до сих пор.
Ответ 2
Если вы подключаетесь к URL-адресу, например http://localhost:1234, измените его на http://localhost.fiddler:1234/ и запросы от HttpClient должны затем стать видимыми в Fiddler.
Ответ 3
IIS не использует параметр прокси-сервера в Internet Option, потому что он работает под другим идентификатором пользователя (по умолчанию это ApplicationPoolIdentity
). @EricLaw предоставил хороший указатель относительно проблемы захвата трафика IIS/ASP.NET.
Вместо того, чтобы настраивать IIS для использования моей учетной записи, я редактирую web.config
, чтобы заставить HTTPClient использовать прокси-сервер, например, следующий.
<configuration>
<system.net>
<defaultProxy enabled="true" useDefaultCredentials="true">
<proxy proxyaddress="http://127.0.0.1:8888"/>
</defaultProxy>
</system.net>
</configuration>
Вот описание из MSDN.
Ответ 4
Если приложение .NET запущено в вашей текущей учетной записи пользователя, добавьте следующий контент внутри раздела конфигурации:
<configuration>
<system.net>
<defaultProxy>
<proxy bypassonlocal="false" usesystemdefault="true" />
</defaultProxy>
</system.net>
</configuration>
Примечание. Важно. Независимо от других параметров,.NET всегда будет обходить прокси-сервер Fiddler для URL-адресов, содержащих localhost. Поэтому вместо использования localhost измените код, чтобы ссылаться на имя машины. Например:
Этот URL-адрес не появится в Fiddler:
http://localhost/X509SignCodeService/X509SigningService.asmx
Этот URL-адрес появится в Fiddler:
http://mymachine/X509SignCodeService/X509SigningService.asmx
Ответ 5
Используйте HttpTracer - библиотеку, которую мы создали специально для этой цели. Вам не нужно настраивать прокси, это так же просто, как передать экземпляр обработчика в HttpClient: new HttpClient(new HttpTracerHandler())
. Попробуйте, это было неоценимо для нас на стороне Xamarin и для целей S2S в ASP.NET.
Ответ 6
Как вы упомянули, скрипач - это инструмент, который вам нужен.
Прочитайте следующий ресурс, чтобы начать работу:
Отладка HTTP
Если fiddler не захватывает какой-либо трафик, попробуйте установить скрипт как прокси-сервер, а затем использовать его как прокси-сервер HttpClient.
Как настроить скрипач для прокси-сервера
Ответ 7
все запросы к IIS регистрируются в каталоге регистрации (диспетчер iis > сервер iis > ведение журнала)
по умолчанию:
% SystemDrive%\Inetpub\журналы\LogFiles
В конце строки есть статус запроса.