Webclient downloadfileasync не работает - PullRequest
1 голос
/ 23 марта 2010

Я получил приложение WPF и хочу загрузить файл.

Я использую System.Net;и у меня есть следующий код:

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

Проблема в том, что он не загружает файл, он просто отображается как файл 0 КБ и не загружается, я не знаю, в чем проблемаКто-нибудь может помочь?

Ответы [ 4 ]

7 голосов
/ 23 марта 2010

Как насчет прослушивания события DownloadFileCompleted и проверки свойства AsyncCompletedEventArgs.Error , которое событие пересылает вашему обработчику?

    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");
    }
2 голосов
/ 23 марта 2010

Некоторые сайты блокируют запросы, в заголовках которых нет определенных заголовков. В частности, я нашел в прошлом заголовок «Пользователь-агент», попробуйте скопировать заголовок из запроса браузера и добавить его в свой WebClient

WebClient.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0)");
0 голосов
/ 25 сентября 2011

Я хотел бы добавить, что метод DownloadFileAsync (я не могу говорить за DownloadFile) не работает, если у вас есть существующее и незакрытое веб-запрос для того же файла. По крайней мере, это мой опыт. Это может быть запрещено структурой или сервером.

0 голосов
/ 23 марта 2010

Найдя ответ, я прочитал, что DownloadFile сначала проверяет DNS, прежде чем что-либо, если я использую IP-адрес, он не выполняет проверку и сразу же работает.

Спасибо всем за помощь в этом.

...