Тайм-аут листинга каталога ftp. Огромное количество subdirs

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

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

2 ответа

Решение

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

        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;

В этом случае учетная запись, используемая вашим кодом для отображения каталога, может отличаться от учетной записи, которая использовалась для создания каталога.

Из-за этого может возникнуть проблема с правами доступа, что в конечном итоге приведет к тайм-ауту.

Пожалуйста, убедитесь, что для создания/листинга каталога используется одна учетная запись.

Например, рассмотрим каталог с именем «2012», внутри которого есть 2 подкаталога, а именно «JAN» и «FEB». Предположим, что «JAN» был создан программно, а «FEB» — вручную. Теперь, если вы попытаетесь просмотреть каталог «FEB» из своей программы, время выполнения кода может истечь, из-за чего вы почувствуете, что он завис.

Другие вопросы по тегам