如何创建字符串VB.Net的实例
好的,我正在制作这个程序,自动从我的远程ftp服务器获取用户名和密码,并登录。但它给了我一个错误,说“对象引用未设置为对象的实例” 以下是我的代码示例:如何创建字符串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
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在你设置它之前没有用户名或密码。。。