Тайм-аут листинга каталога ftp. Огромное количество subdirs - PullRequest
0 голосов
/ 10 февраля 2012

Есть ли способ справиться с ситуацией, когда вам нужно получить список всех каталогов на FTP-сервере, где количество каталогов настолько велико, что его получение занимает слишком много времени и операция завершается неудачно с таймаутом?

Интересно, есть ли какие-нибудь библиотеки, которые позволяют вам как-то это делать?

1 Ответ

2 голосов
/ 10 февраля 2012

Попробуйте что-то вроде этого

        FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(uri);
        ftpRequest.Credentials = new NetworkCredential("anonymous","yourName@SomeDomain.com");//replace with your Creds
        ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
        FtpWebResponse response = (FtpWebResponse)ftpRequest.GetResponse();
        StreamReader streamReader = new StreamReader(response.GetResponseStream());

        List<string> directories = new List<string>();

        string line = streamReader.ReadLine();
        while (!string.IsNullOrEmpty(line))
        {
            directories.Add(line);
            line = streamReader.ReadLine();
        }

        streamReader.Close();

        // also add some code that will Dispose of the StreamReader object
        // something like ((IDisposable)streanReader).Dispose();
        // Dispose of the List<string> as well 
           line = null;
...