2013-07-12 2 views
1

좋아요,이 프로그램은 자동으로 원격 FTP 서버에서 사용자 이름과 암호를 가져 와서 로그인합니다. 그러나 "Object reference 와문자열의 인스턴스를 만드는 방법 VB.Net

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  
+0

'credentials '이 속성에 무엇을 포함합니까? 'credentials.UserName = Nothing'입니까? 그렇다면 오류가 발생하는 것입니다. – Alex

+0

나는 멍청한 소리가 들리 겠지만, "credentials = ftp.credentials"줄에 사용자 이름과 암호를 줄 수는 없습니까? – user2221877

+0

@ user2221877 아니요 - FtpClient에는 사용자 이름이나 비밀번호가 설정되어 있지 않아야합니다 ... –

답변

1

나는 당신의 문제가 여기에 의심 NetworkCredential을 만든 다음 "던져 버리고"FtpClient 자격 증명에서 바꿉니다. 설정하지 않았으므로 Nothing이고 UserName을 가져 오려고하면 예외가 발생합니다.

0

NetworkCredential 당신이 개체에서 그들을 검색 할을 설정하기로 : 오브젝트 "여기

의 인스턴스로 설정되지 않습니다 내 코드의 샘플입니다. 이러한 자격 증명은 FtpClient에 전달됩니다. 그래서 그들이 설정되지 않고 그들은 Nothing이고 따라서 오류입니다.

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

을 바로 지금, 당신이있어 : 당신이를 설정 한 후에

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

, 당신이 그들을 가져 오지 자격 증명에 넣어해야합니다

+0

알겠습니다, 감사 ... – user2221877

관련 문제