繁体   English   中英

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

[英]550 Error when connecting to FTP server. Only occurs with C#

我正在尝试用 C# 编写一个程序,该程序将通过 FTP 进入机器,下载一些日志,然后从机器上删除日志。 此过程适用于开发 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

请尝试这种方式:

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是最安全的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM