直截了当,该程序在Windows 2008 R2服务器上超时。
我已经在我自己的个人桌面以及其他人的PC上完美地运行了这个程序。它下载完美无瑕。但是,在服务器上运行时,它总是超时。
我已经运行了这个程序,而keepalive是false / true和UsePassive,false / true。我连接的FTP服务器的管理员告诉我检查防火墙,防病毒或任何其他IP阻止软件。我做了什么。我错过了什么吗?任何帮助都会很棒!
我只包含了这部分代码,因为它是问题发生的地方(这是对FTP的第一次尝试)。此外,所有FTP客户端软件都可以正常工作(FileZilla,Cyberduck,Classic FTP等)
public static string[] GetDirectoryList() {
string[] downloadFiles;
StringBuilder result = new StringBuilder();
WebResponse response = null;
StreamReader reader = null;
try {
FtpWebRequest reqFTP;
reqFTP = (FtpWebRequest) FtpWebRequest.Create(new Uri("ftp://" + FTPHost + "/"));
reqFTP.UseBinary = true;
reqFTP.Credentials = new NetworkCredential(FTPUser, FTPPass);
reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
reqFTP.Proxy = null;
reqFTP.KeepAlive = true;
reqFTP.UsePassive = false;
response = reqFTP.GetResponse();
reader = new StreamReader(response.GetResponseStream());
string line = reader.ReadLine();
while (line != null) {
result.Append(line);
result.Append("\n");
line = reader.ReadLine();
}
// to remove the trailing '\n'
result.Remove(result.ToString().LastIndexOf('\n'), 1);
return result.ToString().Split('\n');
} catch (Exception ex) {
Console.WriteLine("FtpWebRequest Exception");
Console.WriteLine(ex.Message);
Console.WriteLine(ex.StackTrace);
if (reader != null) {
reader.Close();
}
if (response != null) {
response.Close();
}
downloadFiles = null;
return downloadFiles;
}
}