550连接到FTP服务器时出错。仅在C#中发生

时间:2019-01-03 19:51:31

标签: c# ftp

我试图用C#编写一个程序,该程序将FTP传送到计算机中,下载一些日志,然后从计算机中删除日志。此过程适用于必须在我的机器上进行测试的dev FTP服务器,但是当我尝试连接到生产服务器时,我希望在此程序上使用该程序时,出现“ 550未找到文件或无效的目录或权限问题”错误服务器。

即使使用完全相同的URI,服务器也会列出FileZilla的目录文件。我已经用Wireshark捕获了数据包,并且在使用C#尝试将文本“ total”发送到数据端口后,服务器刚刚断开。

Uri uri = new Uri("ftp://username:password@10.205.205.200:21/");               
FtpWebRequest ftpWebRequest =  FtpWebRequest)WebRequest.Create(uri.ToString());

ftpWebRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails;

// Get the response
FtpWebResponse response = (FtpWebResponse)ftpWebRequest.GetResponse();

// Get the stream and reader
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);

// Close the response
response.Close();

// Get all the results into a list
List<string> results = new List<string>();
results.AddRange(reader.ReadToEnd().Split('\n')); //<---- Web Exception Here

1 个答案:

答案 0 :(得分:1)

请尝试这种方式:

Uri uri = new Uri("ftp://username:password@10.205.205.200:21/");               
FtpWebRequest ftpWebRequest = (FtpWebRequest)WebRequest.Create(uri.ToString());
ftpWebRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails;

using (FtpWebResponse response = (FtpWebResponse)ftpWebRequest.GetResponse())
using (Stream responseStream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(responseStream))
{
    List<string> results = new List<string>();
    results.AddRange(reader.ReadToEnd().Split('\n'));
}

通常,在处理流或其他一次性资源时,最安全的方法是使用using