Я пытаюсь перечислить файлы в каталоге, используя FTP в C #, у меня есть следующий код:
StringBuilder result = new StringBuilder();
var reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(host + "/"));
reqFTP.Credentials = new NetworkCredential(user, pass);
reqFTP.Proxy = new WebProxy(proxy, proxyport)
{
Credentials = new NetworkCredential(proxyuser, proxypass, proxyuserdomain)
};
reqFTP.KeepAlive = false;
reqFTP.UsePassive = false;
reqFTP.UseBinary = false;
reqFTP.Method = WebRequestMethods.Ftp.ListDirectoryDetails; //also tried ListDirectory
using (var response = reqFTP.GetResponse())
{
using (var reader = new StreamReader(response.GetResponseStream()))
{
string line = reader.ReadLine();
while (line != null)
{
result.Append(line);
result.Append("\n");
line = reader.ReadLine();
}
}
}
Возвращает HTML-ответ, подобный следующему:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
FTP Listing of /foo/bar/ at my.ftpste.com
FTP Listing of /foo/bar/ at my.ftpste.com
Parent Directory
Nov 01 2011 17:27 4356 File1.txt
Oct 22 2010 00:00 275051 File2.txt
Oct 25 2010 00:00 1875 File3.txt
Oct 26 2010 00:00 2553 File4.txt
Обратите внимание, что ответ завершен, включая закрывающий тег html.
Проблема в том, что этот список файлов неполон. Когда я открываю тот же URL в Internet Explorer, используя тот же прокси-сервер, я вижу почти идентичный HTML, за исключением того, что в списке больше файлов например, File5.txt, File6.txt). То же самое верно, когда я использую обычный FTP-клиент, такой как filezilla.
Не могу понять, почему это происходит, есть идеи?