WebRequestMethods.Ftp.ListDirectory结果仅限于2000个条目

时间:2016-08-11 15:02:12

标签: c# ftp ftpwebrequest ftpwebresponse

ListDirectory发送到FTP服务器,但仅从FTP返回前2000个项目。添加SSL并未返回更多结果。

我应该使用另一个库来获得完整的结果吗?

ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(OnValidateCertificate);
ServicePointManager.Expect100Continue = true;

FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://XXXX");
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Credentials = new NetworkCredential("User", "Password");
request.EnableSsl = true;

ServicePoint sp = request.ServicePoint;
Console.WriteLine("ServicePoint connections = {0}.", sp.ConnectionLimit);
sp.ConnectionLimit = 1;

using (var response = (FtpWebResponse)request.GetResponse())
{
    using (var stream = response.GetResponseStream())
    {
        using (var reader = new StreamReader(stream, true))
        {
            string line = reader.ReadLine();
            while (line != null)
            {
                ListFiles.Add(line);
                line = reader.ReadLine();
            }
        }
    }
}

2 个答案:

答案 0 :(得分:0)

这显然是服务器上的配置问题。请参阅以下文章:
http://www.inmotionhosting.com/support/website/general-server-setup/incrrease-file-display-limit
Viewing more than 10,000 files on a FTP file server?

基本上,这些文章建议更改服务器配置以允许您查看更多文件或将文件排序到更窄的目录中,这样您就可以更加选择性地在任何给定时间查看哪些文件。

答案 1 :(得分:0)

这不是客户端问题。它可能是限制列表的FTP服务器 您是否尝试使用独立(GUI)客户端?

当您评论您对服务器具有SSH访问权限时,请尝试使用SFTP协议而不是FTP(S)。 SFTP服务器很可能没有限制。