如何创建字符串VB.Net的实例

如何创建字符串VB.Net的实例,vb.net,string,ftp,instance,Vb.net,String,Ftp,Instance,好的,我正在制作这个程序,自动从我的远程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

好的,我正在制作这个程序,自动从我的远程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    

使用
NetworkCredential
您应该设置它们,而不是从该对象检索它们。这些凭据将传递给FtpClient。因此,如果不进行设置,它们将是
Nothing
,因此会出现错误。

使用
NetworkCredential
您应该设置它们,而不是从该对象检索它们。这些凭据将传递给FtpClient。因此,如果不进行设置,它们将是
,因此会出现错误。

我怀疑您的问题在于:

' credentials = ftp.Credentials
' Should be:
ftp.Credentials = credentials
设置此项后,您需要输入凭据,而不是获取凭据:

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

现在,您正在创建一个
NetworkCredential
,然后“扔掉”并从
FtpClient
凭据中替换它。由于您尚未设置它们,因此它们是
Nothing
,这反过来会导致在您尝试获取
用户名时出现异常

' credentials = ftp.Credentials
' Should be:
ftp.Credentials = credentials
设置此项后,您需要输入凭据,而不是获取凭据:

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

现在,您正在创建一个
NetworkCredential
,然后“扔掉”并从
FtpClient
凭据中替换它。由于您尚未设置它们,因此它们是
Nothing
,这反过来会导致在尝试获取
用户名

时出现异常
凭据
在其属性中包含哪些内容?是
credentials.UserName=Nothing
?如果是这样,这就是为什么你会收到错误。我可能听起来像个傻瓜,但是“credentials=ftp.credentials”行不会给它用户名和密码吗?@user2221877否-FtpClient在你设置它之前没有用户名或密码…它的属性中包含什么?是
credentials.UserName=Nothing
?如果是这样的话,这就是为什么你会出现错误。我可能听起来像个傻瓜,但是“credentials=ftp.credentials”行不会给它用户名和密码吗?@user2221877 No-FtpClient在你设置它之前没有用户名或密码。。。