如何在VB.Net中使用WebClient.UploadFileAsync发布自定义标头

如何在VB.Net中使用WebClient.UploadFileAsync发布自定义标头,vb.net,asynchronous,file-upload,webclient,Vb.net,Asynchronous,File Upload,Webclient,我的代码中有一个文件上传脚本,需要在上传的同时发布一个身份验证密钥头。然而,它似乎不像我预期的那样工作。这是我目前的代码: Private Sub uploadFile() Dim address As String = "http://localhost/stripe/upload.php" Dim client As WebClient = New WebClient() Dim uri As Uri = New Uri(address) AddHand

我的代码中有一个文件上传脚本,需要在上传的同时发布一个身份验证密钥头。然而,它似乎不像我预期的那样工作。这是我目前的代码:

Private Sub uploadFile()

    Dim address As String = "http://localhost/stripe/upload.php"

    Dim client As WebClient = New WebClient()
    Dim uri As Uri = New Uri(address)

    AddHandler client.UploadFileCompleted, AddressOf UploadFileCompleted
    AddHandler client.UploadProgressChanged, AddressOf UploadProgressCallback

    client.Headers.Set("authKey", login.authKey)
    client.UploadFileAsync(uri, "POST", uploadFileName)

End Sub

Private Sub UploadProgressCallback(ByVal sender As Object, ByVal e As UploadProgressChangedEventArgs)
    ProgressBar1.Value = e.ProgressPercentage
    Label3.Text = String.Format("{0} / {1} kB", Math.Round(e.BytesSent / 1024), Math.Round(e.TotalBytesToSend / 1024))
    Label2.Text = String.Format("{0}%", e.ProgressPercentage)
    Application.DoEvents()
End Sub

Private Sub UploadFileCompleted(ByVal sender As Object, ByVal e As UploadFileCompletedEventArgs)
    Dim response As String = System.Text.Encoding.ASCII.GetString(e.Result)
    Console.WriteLine(response)
End Sub
当我运行这段代码时:什么也没发生。输出控制台中没有换行符或任何东西。就像代码从未到达UploadFileCompleted子节点一样,它似乎也没有到达UploadProgressCallback,因为进度条和相关标签从未更新

当我试图注释掉client.Headers.SetauthKey时,login.authKey行:文件似乎要上载,但完成后:我收到了一条403禁止消息,因为我没有设置authKey头


我在这里做错了什么?

我发现了我的问题。该问题是由login.authKey对调用它的线程不可访问引起的。由于程序是多线程的:我必须确保线程可以访问它。当我使其可访问时:该函数按预期工作

希望这能帮助我身后的其他人