C# FtpWebRequest通过HTTP代理-文件列表不完整

C# FtpWebRequest通过HTTP代理-文件列表不完整,c#,proxy,ftp,ftpwebrequest,C#,Proxy,Ftp,Ftpwebrequest,我试图在c#中使用ftp列出目录中的文件,我有以下代码: StringBuilder result = new StringBuilder(); var reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(host + "/")); reqFTP.Credentials = new NetworkCredential(user, pass); reqFTP.Proxy = new WebProxy(proxy, proxyport) {

我试图在c#中使用ftp列出目录中的文件,我有以下代码:

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">
<HTML>
<HEAD>
<TITLE>FTP Listing of /foo/bar/ at my.ftpste.com</TITLE>
<BASE HREF="ftp://foo:bar@my.ftpste.com.com/foo/bar/">
</HEAD>
<BODY>
<H2>FTP Listing of /foo/bar/ at my.ftpste.com</H2>
<HR>
<A HREF="../">Parent Directory</A><BR>
<PRE>
Nov 01 2011 17:27         4356 <A HREF="File1.txt">File1.txt</A>
Oct 22 2010 00:00       275051 <A HREF="File2.txt">File2.txt</A>
Oct 25 2010 00:00         1875 <A HREF="File3.txt">File3.txt</A>
Oct 26 2010 00:00         2553 <A HREF="File4.txt">File4.txt</A>
</PRE>
<HR>
</BODY>
</HTML>

/foo/bar/在my.ftpste.com上的FTP列表
/foo/bar/在my.ftpste.com上的FTP列表


2011年11月1日17:274356 2010年10月22日00:00 275051 2010年10月25日00:00 1875 2010年10月26日00:00 2553
请注意,响应已完成,包括结束html标记

问题在于此文件列表不完整。当我使用相同的代理在internet explorer中打开相同的url时,我看到几乎相同的HTML,只是列出了更多的文件(例如File5.txt、File6.txt)。当我使用像filezilla这样的普通FTP客户机时也是如此


我无法理解为什么会发生这种情况,有什么想法吗?

尝试“while(!string.IsNullOrEmpty(line))”而不是你的while,只是一个想法。@M.H:谢谢,我不认为这是问题所在,因为响应已经完成,请注意末尾的
,如果循环提前终止,它就不会出现。