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

Я пытаюсь заставить Fiddler работать с RestSharp использует System.Http.WebProxy, поэтому я хочу, чтобы для него было установлено значение localhost:8888 или 127.0.0.1:8888

Вот код:

    var webProxy = new WebProxy(new Uri("http://127.0.0.1:8888"))
    {
        BypassProxyOnLocal = false
    };

    var bypassed = webProxy.IsBypassed(new Uri("http://127.0.0.1"));
    Console.WriteLine(bypassed);

Выходы: true

MSDN сообщает следующее:

Метод IsBypassed используется для определения необходимости обхода прокси-сервера при доступе к интернет-ресурсу.

Свойства BypassProxyOnLocal и BypassList управляют возвращаемым значением метода IsBypassed.

IsBypassed возвращает true при любом из следующих условий:

  • Если BypassProxyOnLocal имеет значение true и host является локальным URI. Локальные запросы идентифицируются отсутствием точки (.) в URI, как в http://webserver/.

  • Если хост соответствует регулярному выражению в BypassList.

  • Если адрес нулевой.

Все остальные условия возвращают false.

Я не понимаю, почему в моем случае возвращается true, это ошибка? Как заставить его работать тогда? Спасибо!


person Restuta    schedule 11.09.2012    source источник


Ответы (1)


Это жестко закодированное поведение в реализации клиентской библиотеки HTTP в среде .Net, отражающее поведение WinInet до Internet Explorer 9.

В разделе Мониторинг трафика на локальный хост из IE или .NET на веб-сайте Fiddler объясняется, как разобраться с этим.

person Jeffrey Hantin    schedule 11.09.2012
comment
В качестве небольшого изменения того, что предлагает Fiddler: если вы используете oSession.hostname = "localhost", он сохранит ваш номер порта, а не изменит его на 8081. - person AJ Richardson; 13.03.2015
comment
(Обратите внимание на использование oSession.hostname вместо oSession.host) - person AJ Richardson; 13.03.2015