Question

Je suis une application WPF et je veux télécharger un fichier.

J'utilise System.Net; et j'ai le code suivant:

WebClient ww = new WebClient();
ww.DownloadFileAsync(
    new Uri("http://www.sinvise.net/tester/1.jpg"), 
    AppDomain.CurrentDomain.BaseDirectory + "\\1.jpg");

Le problème est, est qu'il ne télécharge pas le fichier, il est juste montrer comme fichier 0kb et non le téléchargement, je ne sais pas quel est le problème, quelqu'un peut-il aider?

Était-ce utile?

La solution 3

trouvé la réponse, je lis que DownloadFile vérifie le DNS avant de quoi que ce soit, si j'utilise une adresse IP, il ne fait pas le contrôle et fonctionne immédiatement.

Merci pour tout le monde aide à ce sujet cependant.

Autres conseils

Que diriez-vous d'écouter de la DownloadFileCompleted événement et vérification de la propriété AsyncCompletedEventArgs.Error la avant l'événement à votre gestionnaire?

    public static void DownLoadFileInBackground(string address)
    {
        WebClient client = new WebClient();
        Uri uri = new Uri(address);
        client.DownloadFileCompleted += (sender,e)=>
                                        {
                                            //inspect e here:
                                            //e.Error
                                        };
        client.DownloadProgressChanged += (sender,e)=>
                                          {
                                              //e.ProgressPercentage
                                          };
        client.DownloadFileAsync(uri, "blabla");
    }

Certains sites Web bloquent les demandes qui n'avez pas certains en-têtes dans la demande. Dans un particulier, j'ai trouvé dans le passé est le « User-Agent » en-tête, essayez de copier un en-tête d'une demande de navigateur et l'ajouter dans votre WebClient

WebClient.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0)");

Je voudrais ajouter que la méthode de DownloadFileAsync (je ne peux pas parler pour DownloadFile) ne fonctionne pas lorsque vous avez un WebRequest existant et pour le même unclosed fichier. Au moins c'est mon expérience. Il peut être qu'il est interdit par le cadre ou le serveur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top