Загрузка веб-клиентаfileasync не работает
-
21-09-2019 - |
Вопрос
У меня есть приложение WPF, и я хочу загрузить файл.
Я использую System.Net;и у меня есть следующий код:
WebClient ww = new WebClient();
ww.DownloadFileAsync(
new Uri("http://www.sinvise.net/tester/1.jpg"),
AppDomain.CurrentDomain.BaseDirectory + "\\1.jpg");
Проблема в том, что он не загружает файл, он просто отображается как файл размером 0 КБ и не загружается. Я не знаю, в чем проблема, может кто-нибудь помочь?
Решение 3
Нашел ответ, прочитал, что DownloadFile прежде всего проверяет DNS, если я использую IP-адрес, он не проверяет и сразу работает.
Спасибо всем за помощь в этом вопросе.
Другие советы
Как насчет того, чтобы послушать ЗагрузкаФайлЗавершен событие и проверка 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");
}
Некоторые веб-сайты блокируют запросы, в которых нет определенных заголовков.В частности, я нашел в прошлом заголовок «User-Agent». Попробуйте скопировать заголовок из запроса браузера и добавить его в свой веб-клиент.
WebClient.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0)");
Я хотел бы добавить, что DownloadFileAsync
метод (не могу говорить за DownloadFile
) не работает, если у вас есть существующий и незакрытый веб-запрос для того же файла.По крайней мере, это мой опыт.Возможно, это не разрешено платформой или сервером.