Не удалось завершить загрузку с помощью DownloadFileAsync

Я пытаюсь загрузить файл, используя простые базовые инструкции веб-клиента, однако загрузка файла не завершается. Если я пытаюсь загрузить файл размером 10 МБ/100 МБ, загружается либо файл размером 7 КБ, либо пустой файл. Я просто использую ProgressBar, чтобы показать ход загрузки. Вот код, который я использую.

Imports System.Net

Public Class Form1

    Dim WithEvents wc As New WebClient

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        wc.DownloadFileAsync(New Uri("http://cachefly.cachefly.net/100mb.test"), "100mb.test")
End Sub

Private Sub wc_DownloadFileCompleted(sender As Object, e As System.ComponentModel.AsyncCompletedEventArgs) Handles wc.DownloadFileCompleted
    ProgressBar1.Visible = False
    ProgressBar1.Value = 0
End Sub

Private Sub wc_DownloadProgressChanged(sender As Object, e As DownloadProgressChangedEventArgs) Handles wc.DownloadProgressChanged
    ProgressBar1.Visible = True
    ProgressBar1.Value = e.ProgressPercentage
End Sub

End Class

person Arun Kumar    schedule 27.02.2017    source источник
comment
Ваш код отлично работает для меня для файла размером 200 МБ неоднократно. Проблема должна быть в другом... прокси, разрешения, лунная фаза? Извините, без понятия.   -  person MrGadget    schedule 27.02.2017
comment
Я не уверен, что здесь не так. Я попробовал код на другом ПК. Создал новый проект только с вышеупомянутым кодом на другом ПК. Пробовал более старую версию .NET Framework. До сих пор не работает. Просто загружает 7kb файла и затем заканчивает. Существуют ли другие альтернативные способы тестирования скорости загрузки/выгрузки?   -  person Arun Kumar    schedule 28.02.2017


Ответы (1)


Наконец, я нашел решение через этот форум. Я просто добавил заголовки в веб-клиент, и все заработало. Вот код для справки другим.

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

Добавьте его перед вызовом функции DownloadFileAsync.

person Arun Kumar    schedule 02.03.2017