2017-01-27 4 views
1

Ich bekomme weiterhin den Fehler "Der Remote-Server hat einen Fehler zurückgegeben: (530) Nicht angemeldet." wenn FtpWebRequest.GetResponse() aufgerufen wird. Ich vermute, es liegt daran, dass ich die FTP-Site für die Standardauthentifizierung falsch konfiguriert habe, aber ich bin mir nicht sicher. Ich habe andere Posts gelesen, aber die Lösungen scheinen sich um die falschen Anmeldeinformationen zu drehen, die im NetworkCredential-Objekt angegeben sind. Ich möchte in der Lage sein, Anmeldeinformationen über SSL an die FTP-Site weiterzuleiten. Ich habe das Problem auf ein Testprojekt isoliert. Hier ist es, vor allem aus dem Msdn kopiert https://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.enablessl(v=vs.110).aspx:FtpWebRequest: Der Remote-Server hat einen Fehler zurückgegeben: (530) Nicht angemeldet

public static void Main(string[] args) 
{ 
    // Only use this to get around issues with self-signed certificates... 
    ServicePointManager.ServerCertificateValidationCallback = 
     delegate (object s, X509Certificate certificate, X509Chain chain, 
     SslPolicyErrors sslPolicyErrors) { return true; }; 

    ListFilesOnServerSsl(new Uri("ftp://127.0.0.1:21")); 

    Console.WriteLine("Press any key..."); 
    Console.ReadKey(); 
} 

public static bool ListFilesOnServerSsl(Uri serverUri) 
{ 
    // The serverUri should start with the ftp:// scheme. 
    if (serverUri.Scheme != Uri.UriSchemeFtp) 
    { 
     return false; 
    } 
    // Get the object used to communicate with the server. 
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri); 
    request.Method = WebRequestMethods.Ftp.ListDirectory; 
    request.UseBinary = false; 
    request.EnableSsl = true; 

    // Need to use credentials to log in... 
    request.Credentials = new NetworkCredential("TestFtpUser", "IDontKnow"); 

    // Get the ServicePoint object used for this request, and limit it to one connection. 
    // In a real-world application you might use the default number of connections (2), 
    // or select a value that works best for your application. 

    ServicePoint sp = request.ServicePoint; 
    Console.WriteLine("ServicePoint connections = {0}.", sp.ConnectionLimit); 
    sp.ConnectionLimit = 1; 

    FtpWebResponse response = (FtpWebResponse)request.GetResponse(); 
    Console.WriteLine("The content length is {0}", response.ContentLength); 
    // The following streams are used to read the data returned from the server. 
    Stream responseStream = null; 
    StreamReader readStream = null; 
    try 
    { 
     responseStream = response.GetResponseStream(); 
     readStream = new StreamReader(responseStream, System.Text.Encoding.UTF8); 

     if (readStream != null) 
     { 
      // Display the data received from the server. 
      Console.WriteLine(readStream.ReadToEnd()); 
     } 
     Console.WriteLine("List status: {0}", response.StatusDescription); 
    } 
    finally 
    { 
     if (readStream != null) 
     { 
      readStream.Close(); 
     } 
     if (response != null) 
     { 
      response.Close(); 
     } 
    } 


    Console.WriteLine("Banner message: {0}", 
     response.BannerMessage); 

    Console.WriteLine("Welcome message: {0}", 
     response.WelcomeMessage); 

    Console.WriteLine("Exit message: {0}", 
     response.ExitMessage); 
    return true; 
} 

Was die Screenshots sind folgende für die Erstellung der FTP-Site auf meinem localhost in IIS:

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

Ich bemerkte, dass IIS nicht mich nach einem Passwort gefragt hat, wenn die Standardauthentifizierung eingerichtet wurde. Ich weiß nicht, warum das so ist. Sollte ich die Standardauthentifizierung für die FTP-Site nicht verwenden?

Vielen Dank im Voraus!

Antwort

0

Es stellte sich heraus, dass ich bei der Konfiguration der FTP-Site in IIS kein lokales Benutzerkonto auf dem Computer konfiguriert hatte, das dem "angegebenen Benutzer" entsprach. Nach "Systemsteuerung" => "Benutzerkonten" => "Benutzerkonten" => "Benutzerkonten verwalten" => "Benutzerkonten verwalten" => Hinzufügen, und Hinzufügen des Benutzers zu meinem lokalen Rechner, die Nachricht "(530) Nicht eingeloggt "ist weg.

Verwandte Themen