Pregunta

¿Es posible detectar/reutilizar esa configuración?

Cómo ?

La excepción que recibo es que esta es la excepción al conectarme 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"
¿Fue útil?

Solución

HttpWebRequest realmente usará la configuración del proxy IE de forma predeterminada.

Si usted no Quiere usarlos, debe anular específicamente el .proxy Proprty a NULL (sin proxy) o la configuración de proxy de su elección.

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

Otros consejos

Estaba obteniendo una situación muy similar en la que la HttpWebRequest no estaba recogiendo los detalles del proxy correctos de forma predeterminada y la configuración de UsedFaultCredentials tampoco funcionó. Sin embargo, forzar la configuración en el código funcionó una delicia:

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

Y debido a que esto usa las credenciales predeterminadas, no debe pedirle al usuario sus detalles.

Tenga en cuenta que este es un duplicado de mi respuesta publicada aquí para un problema muy similar: Autenticación básica proxy en C#: HTTP 407 Error

Para las personas que tienen problemas para que esto juegue bien con el servidor ISA, puede intentar configurar proxy de la siguiente manera:

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

Esto sucede de forma predeterminada, si WebRequest.proxy no se establece explícitamente (por defecto está configurado en WebRequest.DefaultWebProxy).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top