Как использовать Fiddler с HttpClient?

Я знаю, что есть много вопросов / ответов, блогов об этом, не говоря о FAQ Telerik. Тем не менее я не мог найти это диагностировано и решено в чистом виде:

Контекст:

У меня есть приложение Web API, и у меня есть клиент (модульный тест), который использует HttpClient для отправки запросов в API. Приложение веб API слушает вHTTP: // локальный: 8631 / Иногда я использую Fiddler, чтобы увидеть, что происходит.

Выпуск:

Fiddler не перехватывает трафик между моим HttpClient и Web API. После запуска Fiddler трафик все еще в порядке, но не отображается в Fiddler.

Диагностика пока:

Важный: Использование любого браузера и отправка запросовHTTP: // локальный: 8631 / работает, Я имею в виду:трафик, захваченный FiddlerКонфигурирование HttpClient для явного использования Fiddler в качестве прокси не помогает.Изменение URL HttpClient сHTTP: // локальный: 8631 / вHTTP: // локальный.fiddler: 8631 /помогаетнезависимо от того, был ли настроен прокси или нет.

Выводы: По крайней мере, в моем случае: речь идет не о том, HttpClient настроен явно для использования Fiddler в качестве прокси или нет. Речь идет о поведении локального хоста HttpClient и / или Fiddler.

Проблема снова:

Можно спросить: проблема решена, тогда в чем вопрос? Что ж...

Q1: Это все еще болезненная проблема, потому что URL-адрес где-то закодирован или настроен (я имею в видуHTTP: // локальный: 8631 / или же HTTP: // локальный.fiddler: 8631, поэтому при каждом запуске и остановке скрипача он должен обновляться. Подробнее: проверка источника в системе контроля версий и проверка на другом компьютере со стороны партнера по команде могут вызвать проблемы. Итак: есть ли менее болезненный обходной путь для этого?

Жесткое кодирование имени моей машины (которое также может работать) вызывает те же проблемы и проблемы при работе в команде и при использовании системы контроля версий.

Q2: Почему это противоречивое поведение: чистоHTTP: // локальный: 8631 / работает из любого браузера, но не из HttpClient.

Я думаю, что ответ на Q2 может приблизить нас к более удобному обходному пути.

Код выставки

    // Using the following url  w o r k s  regardless of any proxy setting
    // ...but it is a pain to hardcode or configure this and change    depending on Fiddler is running or not

    //private const string ApiUrl = "http://localhost.fiddler:8631/"; 

    // This is not working regardless any proxy setting. Trafic bypasses Fiddler
    private const string ApiUrl = "http://localhost:8631/";

    protected HttpClient GetClient()
    {
        var httpClientHandler = new HttpClientHandler
        {
            // Does not work 
            //Proxy = new WebProxy("http://localhost:8888", false),

            // Does not work
            Proxy = WebRequest.DefaultWebProxy,
            UseProxy = true
        };


        var client = new HttpClient(httpClientHandler)
        {
            BaseAddress = new Uri(ApiUrl)
        };
        // ...

Ответы на вопрос(2)

Ваш ответ на вопрос