Как автоматически разместить/использовать настройки прокси IE в .net httpwebrequest

StackOverflow https://stackoverflow.com/questions/1155363

Вопрос

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

Как ?

Исключение, которое я получаю, заключается в том, что это исключение при подключении к 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"
Это было полезно?

Решение

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

если ты не Хотите использовать их, вы должны специфически переопределить .proxy Proprty либо NULL (без прокси), либо на настройки прокси по вашему выбору.

 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();

Другие советы

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

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;
}

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top