Webclient downloadfileasync не работает

У меня есть приложение WPF, и я хочу загрузить файл.

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

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

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


person Sandeep Bansal    schedule 23.03.2010    source источник
comment
Я предполагаю, что www - это опечатка. Если нет, то сразу проблема.   -  person spender    schedule 23.03.2010
comment
Я попытался запустить загрузку на своем компьютере, и она загрузилась нормально (без каких-либо дополнительных заголовков или чего-то особенного). Проверьте, не блокирует ли передачу какой-либо брандмауэр или что-то в этом роде. Хорошая картинка кстати :-)   -  person Tomas Petricek    schedule 23.03.2010
comment
РЕДАКТИРОВАТЬ: это был мой av, довольно глупо, он даже не подсказал мне!   -  person Sandeep Bansal    schedule 23.03.2010


Ответы (4)


Как насчет прослушивания события 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");
    }
person spender    schedule 23.03.2010
comment
Я попробовал и использовал e.error, чтобы проверить любой вывод и вывести процент прогресса в индикатор выполнения, и снова попытался с окном сообщений, но вывода не было, ни одно событие не началось. - person Sandeep Bansal; 23.03.2010
comment
Я обнаружил, что добавление двух событий устранило периодические проблемы, что странно, потому что это один из немногих случаев, когда мне нужно было добавить события, чтобы обеспечить надежную запись файла. - person Dave Friedel; 20.03.2015

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

WebClient.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0)");
person Lightweight    schedule 23.03.2010
comment
Хотел, чтобы это сработало, но нет, все равно файл не загружается. - person Sandeep Bansal; 23.03.2010

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

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

person Sandeep Bansal    schedule 23.03.2010

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

person Daniel    schedule 24.09.2011