System.Net.WebProxy игнорирует локальные запросы - есть ли способ с этим справиться? - PullRequest
0 голосов
/ 04 сентября 2018

Я хочу отправить запрос в локальный API отдыха через прокси, который также настроен на localhost.

Для этого я подготовил следующую настройку:

    public Task<string> MakeCall(ICredentials credentials, string targetUrl)
    {
        var clientHandler = new HttpClientHandler()
        {
            Proxy = ConfigureProxy(),
            UseProxy = true,
        };

        var client = new HttpClient(clientHandler, true);
        var resp = client.GetAsync(targetUrl).Result.Content.ReadAsStringAsync();
        return resp;
    }

    private static WebProxy ConfigureProxy()
    {
        return new WebProxy
        {
            Address = new Uri("http://localhost:8082"),
            BypassProxyOnLocal = false
        };
    }

Это работает, но не когда targetUrl является адресом локального хоста. Я нашел в сети этот хорошо объясненный ответ:

Как заставить System.Net.WebProxy не обходить локальные URL-адреса?

а также этот пост:

Реализация Microsoft жестко закодирована

Итак, у меня есть вопрос - есть ли способ обойти это поведение? Я хочу отправить запрос на остальные API (на localhost) через прокси (на localhost). Я где-то нашел флаг "-loopback", но мне это не помогло.

Я поэкспериментировал с файлом hosts, пытаясь настроить псевдоним для своего локального адреса, чтобы webproxy не отклонял его. В этом случае Ping каким-то образом отвечает на тот, который я создал, но httpclient не распознает его.

Заранее спасибо

...