Estate atento ya que en esta crónica vas a encontrar la solución que buscas.Esta división fue analizado por nuestros especialistas para asegurar la calidad y veracidad de nuestro post.
Solución:
Aquí está el código de trabajo. Había 2 cosas que no estabas haciendo, que estaban causando el 0
archivo de bytes que se va a descargar.
- no estabas llamando
IsBusy
. Eso debe llamarse para que el código espere a que se complete el hilo actual, ya que la acción asíncrona estará en un nuevo hilo. - El sitio en cuestión estaba devolviendo una puerta de enlace incorrecta, a menos que falsifique la solicitud como si viniera de un navegador web normal.
Cree una aplicación de consola en blanco, coloque el siguiente código y pruébelo.
Pegue este código en el archivo Program.cs de la aplicación de consola nueva/en blanco.
namespace TestDownload
class Program
static void Main(string[] args)
string sourceUrl = "http://ec.europa.eu/economy_finance/db_indicators/surveys/documents/series/nace2_ecfin_1409/all_surveys_total_sa_nace2.zip";
string targetdownloadedFile = @"C:TempTestZip.zip";
DownloadManager downloadManager = new DownloadManager();
downloadManager.DownloadFile(sourceUrl, targetdownloadedFile);
Agregue un nuevo archivo de clase C# llamado DownloadManager y suelte este código en él.
using System;
using System.ComponentModel;
using System.Net;
namespace TestDownload
public class DownloadManager
public void DownloadFile(string sourceUrl, string targetFolder)
WebClient downloader = new WebClient();
// fake as if you are a browser making the request.
downloader.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0)");
downloader.DownloadFileCompleted += new AsyncCompletedEventHandler(Downloader_DownloadFileCompleted);
downloader.DownloadProgressChanged +=
new DownloadProgressChangedEventHandler(Downloader_DownloadProgressChanged);
downloader.DownloadFileAsync(new Uri(sourceUrl), targetFolder);
// wait for the current thread to complete, since the an async action will be on a new thread.
while (downloader.IsBusy)
private void Downloader_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
// print progress of download.
Console.WriteLine(e.BytesReceived + " " + e.ProgressPercentage);
private void Downloader_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
// display completion status.
if (e.Error != null)
Console.WriteLine(e.Error.Message);
else
Console.WriteLine("Download Completed!!!");
Ahora compila y ejecuta la aplicación de consola. Debería ver el progreso en la ventana de salida de la consola así.
Y cuando esté completo, debería ver el archivo zip en la ubicación especificada en el targetdownloadedFile
variable, que en este ejemplo está en C:TempTestZip.zip
en su máquina local.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)