【问题标题】:FtpWebResponse, the operation timed outFtpWebResponse,操作超时
【发布时间】:2026-01-17 16:15:01
【问题描述】:

我想根据文件的日期时间从 ftp 服务器下载文件..我可以从 CuteFtp 第三方访问这个 Ftp,一切都很好..但是当我在 GetRespone() 行运行下面的代码时,我明白了错误:操作已超时。 我使用 webclient requet 以编程方式从该 FTP 下载了一个示例文件,这很好..但我需要使用 FtpWebRequest 来获取 listDirectoryDe​​tail 并且 webClient 不支持..还有一件事,请求中有一个例外:@ 987654324@ 抛出了 System.NotSupportedException 类型的异常。

这是我的代码:

Uri uri = new Uri("ftp://192.168.1.5:2100/");//the private address
        if (uri.Scheme != Uri.UriSchemeFtp)
        {
            return;
        }
        FtpWebRequest reqFTP;
        reqFTP = (FtpWebRequest)WebRequest.Create(uri);                             
        reqFTP.Credentials = new NetworkCredential("myuser", "mypass");
        reqFTP.KeepAlive = false;
        reqFTP.Method = WebRequestMethods.Ftp.ListDirectoryDetails;                               
        reqFTP.UseBinary = true;
        reqFTP.Proxy = null;
        reqFTP.UsePassive = false;
        FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();

请帮忙:(

【问题讨论】:

  • 您是否检查了 NetworkCredential 用户名和密码?因为我猜你照原样复制了你的代码。
  • 当然我已经检查过了!!..使用错误的用户/密码会导致身份验证或登录(不确定)错误。
  • 尝试更改 Uri 以映射到物理存在的文件,例如“192.168.1.5:2100/C:/test.txt”,并将请求方法更改为 request.Method = WebRequestMethods.Ftp.DownloadFile; 看看你得到了什么。
  • 我之前也这样做过..同样的错误!!!
  • 尝试更改端口,设置为默认端口21

标签: c# ftpwebrequest request-timed-out ftpwebresponse


【解决方案1】:

我已经解决了我的问题!... UsePassive 属性应该设置为 True,当它为 true 时,客户端应该在数据端口上发起连接

reqFTP.UsePassive = true;

【讨论】: