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

Как настроить AutoDetect/Use IE proxy в .net HttpWebRequest

Возможно ли обнаружить/повторно использовать эти настройки?

Как?

Исключением, которое я получаю, является Это исключение при подключении к http://www.google.com

System.Net.WebException: Unable to connect to the remote server --->
  System.Net.Sockets.SocketException: A connection attempt failed because the
  connected party did not properly respond after a period of time, or established
  connection failed because connected host has failed to respond 66.102.1.99:80

  at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, 
     SocketAddress socketAddress)
  at System.Net.Sockets.Socket.InternalConnect(EndPoint remoteEP)
  at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure,
     Socket s4, Socket s6, Socket& socket, IPAddress& address,
     ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout,
     Exception& exception)
  --- End of inner exception stack trace ---
  at System.Net.HttpWebRequest.GetResponse()
  at mvcTest.MvcApplication.Application_Start() in
     C:\\home\\test\\Application1\\Application1\\Program.cs:line 33"
4b9b3361

Ответ 1

HttpWebRequest фактически будет использовать настройки прокси-сервера IE по умолчанию.

Если вы не хотите их использовать, вам нужно специально переопределить свойство .Proxy для нулевого (без прокси) или настроек прокси-сервера по вашему выбору.

 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://news.bbc.co.uk");
 //request.Proxy = null; // uncomment this to bypass the default (IE) proxy settings
 HttpWebResponse response = (HttpWebResponse)request.GetResponse();

 Console.WriteLine("Done - press return");
 Console.ReadLine();

Ответ 2

Я получал очень похожую ситуацию, когда HttpWebRequest не собирал правильные данные прокси по умолчанию и установка UseDefaultCredentials тоже не работала. Принуждение настроек в коде, однако, работало с удовольствием:

IWebProxy proxy = myWebRequest.Proxy;
if (proxy != null) {
    string proxyuri = proxy.GetProxy(myWebRequest.RequestUri).ToString;
    myWebRequest.UseDefaultCredentials = true;
    myWebRequest.Proxy = new WebProxy(proxyuri, false);
    myWebRequest.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
}

и поскольку он использует учетные данные по умолчанию, он не должен запрашивать у пользователя свои данные.

Обратите внимание, что это дубликат моего ответа, опубликованного здесь для очень похожей проблемы: Прокси-базовая аутентификация в С#: ошибка HTTP 407

Ответ 3

Для людей, у которых возникают проблемы с тем, чтобы это было хорошо с ISA-сервером, вы можете попытаться настроить прокси следующим образом:

IWebProxy webProxy = WebRequest.DefaultWebProxy;
webProxy.Credentials = CredentialCache.DefaultNetworkCredentials;
myRequest.Proxy = webProxy;

Ответ 4

Это происходит по умолчанию, если WebRequest.Proxy не установлен явно (по умолчанию он установлен в WebRequest.DefaultWebProxy).