DownloadFile via Sistema.Líquida.WebClient não funciona
-
12-12-2019 - |
Pergunta
Eu não posso fazer download de qualquer arquivo com o código a seguir:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
DownloadFile("http://mirror.switch.ch/ftp/mirror/videolan/vlc/2.0.3/vlc-2.0.3.tar.xz", "C:\TEST\vlc-2.0.3.tar.xz")
End Sub
Public Sub DownloadFile(ByVal _URL As String, ByVal _SaveAs As String)
Dim _WebClient As New System.Net.WebClient()
_WebClient.DownloadFile(_URL, _SaveAs)
End Sub
A seguir os erros de pop-up:(traduzido de alemão para inglês):
A partir da Microsoft Pop-UP de Erro:
==> Um não tratada isenção do tipo de Sistema".Líquida.WebException" apareceu em System.dll.
E no depurador:
==> Exeption:Acionado:"Um argumento inválido foi especificado" (Sistema.Líquida.Sockets.SocketException) Do Sistema.Líquida.Sockets.SocketException foi acionado."Um argumento inválido foi especificado"
CÓDIGO COMPLETO:
Imports System
Imports System.Net
Public Class Form2
Dim str_hd As String
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For Each drive As System.IO.DriveInfo In My.Computer.FileSystem.Drives
Dim dbl_capacity As Double
Dim dbl_free As Double
Dim dbl_used As Double
If drive.IsReady Then
dbl_capacity = drive.TotalSize / 1073741824
dbl_free = drive.TotalFreeSpace / 1073741824
dbl_used = dbl_capacity - dbl_free
dbl_capacity = Fix(dbl_capacity * 1) / 1
dbl_free = Fix(dbl_free * 10) / 10
dbl_used = Fix(dbl_used * 10) / 10
str_hd = str_hd & "Laufwerk " & drive.Name & " - " _
& drive.VolumeLabel & vbCrLf _
& "Benutzt: " & dbl_used & " GB" & " / " & dbl_capacity & " GB" & vbCrLf & "Frei: " _
& dbl_free & "GB" & vbCrLf & "-------------------------------" & vbCrLf
End If
Next
txtbox_hd.Text = str_hd
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Form1.Close()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
DownloadFile("http://www.aerztekammer-hamburg.de/berufsrecht/Berufsordnung.pdf", "C:\TEST\Berufsordnung.pdf")
End Sub
Public Sub DownloadFile(ByVal _URL As String, ByVal _SaveAs As String)
Dim _WebClient As New System.Net.WebClient()
_WebClient.DownloadFile(_URL, _SaveAs)
End Sub
End Class
Solução
A pasta C:\TEST
existem?Também, a partir da documentação:
Quando utilizar este método em um aplicativo da camada intermediária, como um ASP.NET página, você vai receber um erro se a conta sob a qual o aplicativo é executado não tem permissão para acessar o arquivo.
Wenn Sie diese Methode in einer Anwendung der Meia-Lágrima verwenden, z.B.einer ASP.NET-Seite, erhalten Sie eine Fehlermeldung, wenn das Konto, unter dem morrer Anwendung ausgeführt wird, nicht über die Berechtigung zum Zugriff auf die Datei verfügt.