.Net FtpWebRequest иногда терпит неудачу

Я пытаюсь перечислить сведения о файле с помощью FtpWebRequest, но очень часто он завершается с WebException и выдает ошибку 530 Пользователь не вошел в систему.

Как это возможно, что он иногда работает с использованием тех же учетных данных?

Выдержка из кода:

        reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpuri));
        reqFTP.UseBinary = true;
        reqFTP.Credentials = new NetworkCredential(userName, password);
        string[] downloadFiles = new string[0];
            reqFTP.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
            WebResponse response = reqFTP.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream());
            downloadFiles = reader.ReadToEnd().Replace("\r\n", "¤").Split('¤');
            reader.Close();
            response.Close();
13.10.2009 09:56:09
У меня была именно эта проблема. Кажется, это происходит чаще, когда я уже некоторое время подключен к серверу, затем я меняю каталог и делаю список.
Jonathan 17.02.2010 09:51:59
Ваша проблема похожа на ошибку встроенного в Windows Explorer FTP (то есть: Internet Explorer, интегрированного в Explorer.exe), когда после навигации по каталогу он «теряет» ваши учетные данные и неоднократно просит вас войти в систему. Я никогда не слышал об этом при использовании dotnet.
David Anderson 28.04.2011 09:15:15
1 ОТВЕТ
РЕШЕНИЕ

Попробуйте установить

reqFTP.KeepAlive = false;

и, возможно, если выше не работает

reqFTP.UsePassive = false;

Я обнаружил, что установка их в ложь значительно уменьшила возникновение этой ошибки (которая генерируется сервером FTP).

1
27.07.2011 02:11:42