1

好的,我正在制作这个程序,它会自动从我的远程 ftp 服务器获取用户名和密码,然后登录。但它给了我一个错误,上面写着“对象引用未设置为对象的实例”

这是我的代码示例:

    Imports System.Net
    Imports System.Net.FtpClient
    Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Using ftp = New FtpClient()
        Dim credentials As New NetworkCredential
        ftp.Host = "my ftp server"
        credentials = ftp.Credentials
        Dim username As String
        username = credentials.UserName.ToString 'Object reference not set to an instance of an object
        Dim password As String
        password = credentials.Password.ToString
    End Using
End Sub    
4

2 回答 2

1

我怀疑你的问题在这里:

' credentials = ftp.Credentials
' Should be:
ftp.Credentials = credentials

设置好后,您需要输入凭据,而不是获取它们:

Dim username As String = GetUserNameFromSomewhere()
credentials.UserName = username
' Same as password

现在,您正在创建一个NetworkCredential,然后“将其丢弃”并从FtpClient凭据中替换它。由于您尚未设置它们,因此它们是Nothing,当您尝试获取UserName.

于 2013-07-12T18:35:19.493 回答
0

NetworkCredential您应该设置它们而不是从该对象中检索它们。这些凭据被传递给 FtpClient。所以没有设置它们Nothing,因此错误。

于 2013-07-12T18:35:17.620 回答