Исключение с WebClient.DownloadFileAsync - PullRequest
       10

Исключение с WebClient.DownloadFileAsync

2 голосов
/ 19 сентября 2010

Я пытаюсь загрузить zip-файл на свой сервер, выполнив

WebClient.DownloadFileAsync(new Uri(DownloadLink),
                            Path.GetFileName(DownloadLink));

У меня есть события, связанные с завершением загрузки и изменением хода выполнения, и когда загрузка достигает 99%, она останавливается. Поэтому я даю ему минутку, а потом - исключение:

System.Net.WebException: An exception occurred during a WebClient request. ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
   at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)
   --- End of inner exception stack trace ---
   at System.Net.ConnectStream.EndRead(IAsyncResult asyncResult)
   at System.Net.WebClient.DownloadBitsReadCallbackState(DownloadBitsState state, IAsyncResult result)
   --- End of inner exception stack trace ---

Я в тупике. Я могу нормально загрузить файл в своем браузере.

Ответы [ 2 ]

0 голосов
/ 19 сентября 2010

Вы получите исключение WebException, если DownloadLink вернет ошибку, например 404. Установите точку останова и проверьте фактический путь в методе.

Редактировать: Если DownloadLink является строкой URL, проверьте, экранируете ли вы '/'. Попробуйте @ "..."

0 голосов
/ 19 сентября 2010

У меня нет прямого ответа на ваш вопрос, но есть несколько вещей, которые я бы попробовал, чтобы посмотреть, смогу ли я определить проблему.

Во-первых, избавьтесь от асинхронного вызоваи просто позвоните DownloadFile.Ошибка по-прежнему возникает?

Вызовите DownloadData, чтобы получить данные в байтовом массиве, а затем сохраните файл.

Если сработает один или оба из вышеперечисленных, то я быскажем, что с вашим обработчиком событий DownloadDataCompleted что-то не так, хотя причина, по которой он выбрасывает WebException, мне не подходит.

О, еще одна вещь: вы уверены, что Path.GetFileName(DownloadLink) возвращает действительный файлимя, а что у вас есть необходимые разрешения для записи файла в текущий каталог?

...