2017-01-27 15 views
1

Я продолжаю получать сообщение об ошибке «Удаленный сервер вернул ошибку: (530) Не вошел». когда вызывается FtpWebRequest.GetResponse(). Я подозреваю, что это потому, что я неправильно сконфигурировал FTP-сайт для обычной проверки подлинности, но я не уверен. Я читал другие сообщения, но решения, похоже, вращаются вокруг неправильных учетных данных, заданных в объекте NetworkCredential. Я хотел бы иметь возможность передавать учетные данные на ftp-сайт через SSL. Я выделил проблему для тестового проекта. Вот она, в основном скопированы из MSDN https://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.enablessl(v=vs.110).aspx:FtpWebRequest: Удаленный сервер возвратил ошибку: (530) Не зарегистрирован

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; 
} 

Ниже приведены скриншоты для создания сайта передачи файлов на моем локальном хосте в IIS:

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

я заметил, что IIS не спрашивай меня пароля при обычной проверке подлинности была создана. Я не знаю, почему это так. Должен ли я не использовать обычную проверку подлинности для FTP-сайта?

Большое спасибо заранее!

ответ

0

Оказалось, что я не настроил локальную учетную запись пользователя на машине, чтобы она соответствовала «указанному пользователю» при настройке ftp-сайта в IIS. После перехода в «Панель управления» => «Учетные записи пользователей» => «Учетные записи пользователей» => «Управление учетными записями пользователей» => «Управление учетными записями пользователей» => Добавить и добавить пользователя на мой локальный компьютер сообщение «(530) Не зашел. «Ушел.