2012-04-27 20 views
6

Sto cercando di utilizzare il FtpWebRequest in C# il mio codice èutilizzando FtpWebRequest con un errore: il server remoto ha restituito l'errore 530 non connesso

// Get the object used to communicate with the server. 
      FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://192.168.20.10/file.txt"); 
      request.Method = WebRequestMethods.Ftp.UploadFile; 

      // This example assumes the FTP site uses anonymous logon. 
      request.Credentials = new NetworkCredential("dev\ftp", "devftp"); 

      // Copy the contents of the file to the request stream. 
      StreamReader sourceStream = new StreamReader(@"\file.txt"); 
      byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd()); 
      sourceStream.Close(); 
      request.ContentLength = fileContents.Length; 
      request.UsePassive = true; 
      Stream requestStream = request.GetRequestStream(); 
      requestStream.Write(fileContents, 0, fileContents.Length); 
      requestStream.Close(); 

      FtpWebResponse response = (FtpWebResponse)request.GetResponse(); 

      Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription); 

      response.Close(); 

ed ottengo un errore in request.GetRequestStream(); l'errore è: il server remoto ha restituito l'errore 530 non registrato in se provo ad andare in una pagina del browser e nell'URL scrivo ftp://192.168.20.10/ la pagina di navigazione mi sta chiedendo un nome e una password, ho messo lo stesso nome e password e vedo tutti i file e le cartelle nella cartella ftp.

risposta

15

Non dovrebbe la linea:

request.Credentials = new NetworkCredential("dev\ftp", "devftp"); 

essere:

request.Credentials = new NetworkCredential("dev\\ftp", "devftp"); 

o:

request.Credentials = new NetworkCredential(@"dev\ftp", "devftp"); 

devo credere che questo potrebbe essere la causa i problemi perché il \ f è un carattere di avanzamento della forma.

6

Ho scoperto che durante il collegamento tramite .NET/C# a un server FTP alcuni caratteri non sono "validi". Dopo aver impostato le credenziali di accesso ai soli solo lettere e numeri [a-Z0-9] ha funzionato il login

+0

Ha funzionato! Grazie – user5071155

7

affrontato lo stesso problema, ecco la mia soluzione:.

request.Credentials = new NetworkCredential(
    usernameVariable.Normalize(),passwordVariable.Normalize(),domainVariable.Normalize()); 

dettagli possono essere trovati here

Spero che aiuti.

0

Basta rimuovere il doppio preventivo dal nome utente o password perché a volte $ accesso in nome utente o password causa problemi. È buono usare ogni volta una virgoletta singola.

+0

Don non pubblicare la stessa risposta a diverse domande. Probabilmente è meglio quindi contrassegnarli come duplicati l'uno dell'altro. – Jaap

+0

@ Jaap grazie per la vostra guida. –

Problemi correlati