Почему WebProxy BypassProxyOnLocal не работает для меня?
Я пытаюсь получить HTTP-вызовы из C# .NET на локальный адрес (localhost:3000), чтобы использовать прокси-сервер, который я установил (чтобы я мог пройти через fiddler). Использование приведенного ниже подхода WebProxy работает, если я указываю целевой URL на нелокальный адрес, однако мне нужно указать его на локальном веб-сервере, который у меня есть (на localhost:3000), и когда я делаю это, запрос не собирается через прокси.
Я включил "proxyObject.BypassProxyOnLocal = false". Это должно заставить его работать нет? Есть ли какие-либо предложения относительно того, как заставить запрос пройти через WebProxy для http-вызовов, ориентированных на локальный адрес?
WebProxy proxyObject = new WebProxy("http://localhost:8888/", false);
proxyObject.Credentials = new NetworkCredential();
proxyObject.BypassProxyOnLocal = false;
WebRequest.DefaultWebProxy = proxyObject;
var request = (HttpWebRequest)WebRequest.Create(targetUri);
// I also included this line as a double check
request.Proxy = proxyObject;
Последующие звонки не проходят через прокси, например, когда я делаю:
var res = (HttpWebResponse)req.GetResponse();
Спасибо
3 ответа
Я могу обойти это, просто добавив точку в localhost, поэтому вместо доступа к localhost я пытаюсь получить доступ к localhost. (обратите внимание на точку в конце имени хоста)
Кредит, где кредит должен: я получил этот необычный совет из этой темы http://www.west-wind.com/weblog/posts/2009/Jan/14/Monitoring-HTTP-Output-with-Fiddler-in-NET-HTTP-Clients-and-WCF-Proxies
Работает отлично!
См. Объяснение на http://www.fiddler2.com/fiddler/help/hookup.asp
Internet Explorer и.NET Framework жестко закодированы, чтобы не отправлять запросы на Localhost через какие-либо прокси-серверы, и в качестве прокси-сервера Fiddler не будет получать такой трафик.
Самый простой обходной путь - использовать имя компьютера в качестве имени хоста вместо Localhost или 127.0.0.1. Так, например, вместо того, чтобы http://localhost:8081/mytestpage.aspx, вместо этого посетите http://machinename:8081/mytestpage.aspx.
Похоже, ошибка в WCF. Проверь это: