Как я могу отследить запрос 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

В конце строки есть статус запроса.