Pregunta

He escrito una aplicación de consola muy sencillo que solo se está descargando un archivo utilizando el siguiente fragmento de código:

System.Net.WebClient web = new System.Net.WebClient ();
web.DownloadFile ("http://www.google.com", "file.txt");

En mi máquina de desarrollo anterior, esto fue muy rápido. Tan pronto como lo ejecuta el método DownloadFile, la solicitud fue por encima del alambre y la respuesta llegó de vuelta muy pronto. Inspeccioné este comportamiento con la herramienta ProcMon.

Sin embargo, después de cambiar a otra máquina, que pasa a ser mucho más potente que mi caja de desarrollo inicial, me di cuenta de que no pasaría nada durante unos 5-8 segundos, al llamar al DownloadFile. Ir a la misma URL con un navegador mostraría resultados casi inmediatos.

Después de pasar varias horas buscando en esto, entrar en el código fuente de .NET, finalmente me di por vencido en System.Net.ServicePointManager.FindServicePoint donde la intensificación de alguna manera ya no tenía sentido para mí, y donde alguna resolución de proxy pareció estar en causa.

Finalmente apagado Detectar la configuración automáticamente en el Configuración de LAN de diálogo de la Opciones de Internet de diálogo, que se encuentra en Internet Explorer 8 (I estoy corriendo Windows 7 x64), dejando el diálogo con ningún conjunto casilla. Este hecho mágicamente todo lo hacen muy, muy rápido. Sin más demora.

Bueno, he encontrado una manera de evitar el problema que estaba observando, pero estaría contento si alguien podría compartir algunas ideas sobre lo que podría estar mal con mi código. ¿Hay algún modo conseguir el mismo efecto mediante la configuración de alguna manera la instancia WebClient?

¿Fue útil?

Solución

Ha intentado establecer explícitamente el proxy?

web.Proxy = new WebProxy();

Esto básicamente debe ser equivalente a decir, "No utilice un proxy en absoluto -. Ni siquiera lo intentan"

Otros consejos

¿Usted ha intentado establecer las propiedades web.Proxy?

Ejemplo:

System.Net.WebClient web = new WebClient();
web.Proxy = new WebProxy("Address here");
web.DownloadFile("http://www.google.com", "file.txt");
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top