Vb.net 尝试通过FTP上载文件时出现空引用异常

Vb.net 尝试通过FTP上载文件时出现空引用异常,vb.net,ftp,nullreferenceexception,Vb.net,Ftp,Nullreferenceexception,我制作了一个FTP上传应用程序,它将FileDialog中选择的文件名更改为4个组合框中的一组变量。但每当我试图上传文件时,它都会说: Path不能为空参数名称:Path 在即时窗口中显示: mscorlib.dll中发生了类型为“System.ArgumentNullException”的首次意外异常 Microsoft.VisualBasic.dll中发生了类型为“System.NullReferenceException”的首次意外异常 这是: 我已经看过多次代码,但我不明白是什么错了,

我制作了一个FTP上传应用程序,它将FileDialog中选择的文件名更改为4个组合框中的一组变量。但每当我试图上传文件时,它都会说:
Path不能为空参数名称:Path

在即时窗口中显示:
mscorlib.dll中发生了类型为“System.ArgumentNullException”的首次意外异常
Microsoft.VisualBasic.dll中发生了类型为“System.NullReferenceException”的首次意外异常

这是:

我已经看过多次代码,但我不明白是什么错了,因为我是VB新手

这是我使用的代码:

Dim Filename As String
    Dim originalFile As String

    Private Function enumerateCheckboxes(ByVal path As String)
        originalFile = path
        Dim fName As String
        For Each Control In Me.Controls
            If (TypeOf Control Is ComboBox AndAlso DirectCast(Control, ComboBox).SelectedIndex > -1) Then
                fName += CStr(Control.SelectedItem.Key) + "_"
            End If
        Next
        Try
            fName = path + fName.Substring(0, fName.Length - 1) + ".pdf"
        Catch ex As Exception
            MsgBox(ex.Message)
            MsgBox("Stack Trace: " & vbCrLf & ex.StackTrace)
        End Try
        Return fName
    End Function

    Public Function OpenDialog()
        Dim FD As OpenFileDialog = New OpenFileDialog()

        FD.Title = "Selecteer een bestand"
        FD.InitialDirectory = "C:\"
        FD.Filter = "All files (*.*)|*.*|All files (*.*)|*.*"
        FD.FilterIndex = 2
        FD.RestoreDirectory = True

        If FD.ShowDialog() = DialogResult.OK Then
            Dim Filename As String = FD.FileName
            Filename = StrReverse(Filename)
            Filename = Mid(Filename, InStr(Filename, "\"), Len(Filename))
            Filename = StrReverse(Filename)
            MsgBox(enumerateCheckboxes(Filename))
        End If
    End Function

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim request As System.Net.FtpWebRequest = DirectCast(System.Net.WebRequest.Create("ip"), System.Net.FtpWebRequest)
        request.Credentials = New System.Net.NetworkCredential("username", "password")
        request.Method = System.Net.WebRequestMethods.Ftp.UploadFile

        Dim file() As Byte

        Try
            Filename = OpenDialog()
            System.IO.File.ReadAllBytes(Filename)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            MessageBox.Show("Stack Trace: " & vbCrLf & ex.StackTrace)
        End Try

        FileSystem.Rename(originalFile, Filename)
        Dim strz As System.IO.Stream = request.GetRequestStream()
        strz.Write(file, 0, file.Length)
        strz.Close()
        strz.Dispose()
        FileSystem.Rename(Filename, originalFile)
    End Sub

提前感谢

一个
参数NullException
不是一个
NullReferenceException
。它告诉你其中一个函数的参数是
Nothing

部分原因在于这两条线:

Filename = OpenDialog()
System.IO.File.ReadAllBytes(Filename)

在本例中,您的
文件名
似乎是
,因为
OpenDialog
不返回值。您需要返回从
OpenFileDialog

中选择的文件
ArgumentNullException
不是
NullReferenceException
。它告诉你其中一个函数的参数是
Nothing

部分原因在于这两条线:

Filename = OpenDialog()
System.IO.File.ReadAllBytes(Filename)

在本例中,您的
文件名
似乎是
,因为
OpenDialog
不返回值。您需要返回从
OpenFileDialog

中选择的文件
ArgumentNullException
不是
NullReferenceException
。它告诉你其中一个函数的参数是
Nothing

部分原因在于这两条线:

Filename = OpenDialog()
System.IO.File.ReadAllBytes(Filename)

在本例中,您的
文件名
似乎是
,因为
OpenDialog
不返回值。您需要返回从
OpenFileDialog

中选择的文件
ArgumentNullException
不是
NullReferenceException
。它告诉你其中一个函数的参数是
Nothing

部分原因在于这两条线:

Filename = OpenDialog()
System.IO.File.ReadAllBytes(Filename)

在本例中,您的
文件名
似乎是
,因为
OpenDialog
不返回值。您需要返回从
OpenFileDialog

System.IO.file.ReadAllBytes(文件名)
Filename
null
System.IO.file.ReadAllBytes(文件名):
Filename
null
System.IO.file.ReadAllBytes(文件名)
Filename
null
System.IO.File.ReadAllBytes(Filename)
Filename
null
。好了,我知道我做错了什么,但我不完全明白如何修复这个问题。将return语句添加到OpenFileDialog(),但在何处?可能在该if语句中:
if FD.ShowDialog()=DialogResult.OK然后
。如果
Filename=OpenDialog()
之后的任何代码依赖于已选择的文件,则应使用
包装,如果(不是文件名什么都不是),则
OK,我知道我做错了什么,但我不完全理解如何修复此问题。将return语句添加到OpenFileDialog(),但在何处?可能在该if语句中:
if FD.ShowDialog()=DialogResult.OK然后
。如果
Filename=OpenDialog()
之后的任何代码依赖于已选择的文件,则应使用
包装,如果(不是文件名什么都不是),则
OK,我知道我做错了什么,但我不完全理解如何修复此问题。将return语句添加到OpenFileDialog(),但在何处?可能在该if语句中:
if FD.ShowDialog()=DialogResult.OK然后
。如果
Filename=OpenDialog()
之后的任何代码依赖于已选择的文件,则应使用
包装,如果(不是文件名什么都不是),则
OK,我知道我做错了什么,但我不完全理解如何修复此问题。将return语句添加到OpenFileDialog(),但在何处?可能在该if语句中:
if FD.ShowDialog()=DialogResult.OK然后
。如果
Filename=OpenDialog()
之后的任何代码依赖于已选择的文件,则应使用
包装,如果(不是Filename就是Nothing),则