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

Использование прокси с .NET 4.5 HttpClient

Я искал ошибку с помощью сервиса, который я вызываю через .NET HttpClient, пытаясь перенаправить запрос через локальный прокси (Fiddler), но настройки моего прокси-сервера, похоже, не вступают в силу.

Вот как я создаю клиента:

private HttpClient CreateHttpClient(CommandContext ctx, string sid) {
    var cookies = new CookieContainer();

    var handler = new HttpClientHandler {
        CookieContainer = cookies,
        UseCookies = true,
        UseDefaultCredentials = false,
        Proxy = new WebProxy("http://localhost:8888", false, new string[]{}),
        UseProxy = true,
    };

    // snip out some irrelevant setting of authentication cookies

    var client = new HttpClient(handler) {
        BaseAddress = _prefServerBaseUrl,
    };

    client.DefaultRequestHeaders.Accept.Add(
        new MediaTypeWithQualityHeaderValue("application/json"));

    return client;
}

затем отправлю запрос:

var response = CreateHttpClient(ctx, sid).PostAsJsonAsync("api/prefs/", smp).Result;

Запрос отправляется прямо на сервер, не пытаясь попасть в прокси-сервер. Что я пропустил?

4b9b3361

Ответ 1

А, базовый адрес, на который я указывал, был http://localhost:8081. Оказывается, несмотря на то, что при установке BypassOnLocal на значение false, очевидно, что localhost по-прежнему является особым, что он обходит прокси.

Я добавил привязку домена в IIS, запись файла хоста, чтобы указать, что домен до 127.0.0.1, используемый недавно созданный домен, теперь он работает.

Ответ 2

Этот код работал у меня:

var httpClientHandler = new HttpClientHandler
                        {
                            Proxy = new WebProxy("http://localhost:8888", false),
                            UseProxy = true
                        }

Обратите внимание, что я не поставляю пустой массив в свой конструктор WebProxy. Может быть, проблема?

Ответ 3

Является ли Fiddler настроенным для захвата трафика из всех процессов? Посмотрите на строку состояния, где вы видите "Захват". Он должен показывать рядом с ним "Все процессы". Если он показывает "Веб-браузеры", щелкните его и измените на все процессы. Это может отличаться в зависимости от версии используемого вами Fiddler.