2012-04-27 14 views
6

Próbuję użyć ftpWebRequest wC# mój kod jestużyciu ftpWebRequest z błędem: zdalny serwer zwrócił błąd 530 nie zalogowany

// 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(); 

i dostaję błąd w request.GetRequestStream(); Błąd jest następujący: serwer zdalny zwrócił błąd 530 niezalogowany jeśli próbuję wejść na stronę przeglądarki iw url, piszę ftp://192.168.20.10/ , strona brwi pyta mnie o imię i hasło, podaję to samo imię i hasło i widzę wszystkie pliki i foldery w folderze ftp.

Odpowiedz

15

nie powinno linia:

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

być:

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

czyli

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

muszę uwierzyć, że to może być przyczyną problemów z ponieważ \ f jest charakter postaci.

6

Okazało się, że podczas łączenia się przez .NET/C# z serwerem FTP niektóre znaki nie są "poprawne". Po ustawieniu danych logowania do zaledwie tylko liter i cyfr [A-Z0-9] zadziałało się zalogować

+0

To działało! Dzięki – user5071155

7

obliczu tego samego problemu, oto moje rozwiązanie.

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

Szczegóły można znaleźć here

Mam nadzieję, że to pomaga.

0

Wystarczy usunąć podwójny cudzysłów z nazwy użytkownika lub hasła, ponieważ czasami $ zaloguj się nazwa użytkownika lub hasło powoduje problem. Dobrze jest używać pojedynczego cudzysłowu za każdym razem.

+0

Don nie wysyłaj tej samej odpowiedzi na kilka pytań. Prawdopodobnie lepiej jest zaznaczyć je jako duplikaty. – Jaap

+0

@Jaap dzięki za wskazówki. –

Powiązane problemy