.net 为什么我不能从FTP服务器得到响应?

.net 为什么我不能从FTP服务器得到响应?,.net,ftp,fluentftp,.net,Ftp,Fluentftp,不久前,我创建了一个应用程序,它利用FluentFTP列出并从FTP服务器下载文件。在过去一个月内,每当使用库执行任何FTP操作时,应用程序都开始超时。我检查了FluentFTP生成的日志,操作已成功执行,但未正确处理。我尝试了GetListing和Download,但遇到了相同的错误。查看堆栈跟踪,常见的故障点似乎发生在GetReply()上,上面说: 从服务器检索回复。不要执行此方法 除非您确定已发送回复,即您 执行命令。这样做将导致代码挂起 无限期地等待永远不会出现的服务器回复 在我看来,

不久前,我创建了一个应用程序,它利用FluentFTP列出并从FTP服务器下载文件。在过去一个月内,每当使用库执行任何FTP操作时,应用程序都开始超时。我检查了FluentFTP生成的日志,操作已成功执行,但未正确处理。我尝试了GetListing和Download,但遇到了相同的错误。查看堆栈跟踪,常见的故障点似乎发生在
GetReply()
上,上面说:

从服务器检索回复。不要执行此方法 除非您确定已发送回复,即您 执行命令。这样做将导致代码挂起 无限期地等待永远不会出现的服务器回复

在我看来,由于某种原因,我没有收到FTP服务器的响应。然而,我不知道为什么。我可以毫无困难地使用像WinSCP这样的独立FTP客户端。barebones.NET FtpWebRequest和FtpWebResponse也可以工作。我试着在家测试,它工作正常。我和我的IT部门核实过,他们声称他们最近没有做任何更改。我没有更改我的代码。无论我连接到哪个服务器,这种情况都会发生

任何帮助都将不胜感激

这是我的测试代码。(我在vanilla.NET下运行了此操作。超时也发生在.NET core下,只是没有引发任何异常):

以下是FleuntFTP生成的日志:

#Connect()
状态:连接到195.144.107.198:21
答复:220 Microsoft FTP服务
状态:检测到FTP服务器:WindowsServerIIS
命令:用户演示
响应:演示需要331密码。
命令:通过***
响应:230用户已登录。
指挥:专长
响应:支持211个扩展功能:
答复:朗恩*
答复:UTF8
答复:AUTH TLS;TLS-C;SSL;TLS-P;
答复:PBSZ
应答:protc;P
答复:CCC
答复:主持人
答复:尺寸
答复:MDTM
响应:REST流
答复:211完
状态:文本编码:System.Text.UTF8Encoding
命令:选择UTF8打开
响应:200选择UTF8命令成功-UTF8编码现在打开。
命令:SYST
答复:215 Windows\n
#GetListing(“/”,自动)
命令:I型
响应:200类型设置为I。
#OpenPassiveDataStream(自动辅助,“列表/”,0)
命令:EPSV
响应:229进入扩展被动模式(| | | | 1033 |)
状态:连接到195.144.107.198:1033
命令:列表/
响应:125个数据连接已打开;换乘开始。
+---------------------------------------+
列表:10-27-15 03:46下午酒吧
清单:04-08-1403:09pm403 readme.txt
-----------------------------------------
状态:正在处理FtpSocketStream。。。
#CloseDataStream()
线程0x5b4已退出,代码为0(0x0)。
状态:正在处理FtpSocketStream。。。
在FluentFTP.dll中引发异常:“System.TimeoutException”
FluentFTP.dll中发生类型为“System.TimeoutException”的未处理异常
尝试从套接字流读取数据时超时!
以下是堆栈跟踪:

System.TimeoutException
HResult=0x80131505
Message=尝试从套接字流读取数据时超时!
Source=FluentFTP
堆栈跟踪:
在FluentFTP.FtpSocketStream.Read处(字节[]缓冲区,Int32偏移量,Int32计数)
位于FluentFTP.FtpSocketStream.ReadLine(编码)
在FluentFTP.FtpClient.GetReply()上
在FluentFTP.FtpClient.CloseDataStream(FtpDataStream流)上
在FluentFTP.FtpDataStream.Close()处
在FluentFTP.FtpClient.GetListingInternal(字符串listcmd、ftplistotion选项、布尔重试)
在FluentFTP.FtpClient.GetListing(字符串路径,ftplistoptions)
位于FluentFTP.FtpClient.GetListing(字符串路径)
在C:\Users\jevensen\source\repos\FtpTest\FtPNetTest\Program.cs中的FtPNetTest.Program.Main(字符串[]args)处:第18行
以下是下载日志(这是在最新更新之前,该更新实际上忽略了超时):

#Connect()
状态:连接到195.144.107.198:21
答复:220 Microsoft FTP服务
状态:检测到FTP服务器:WindowsServerIIS
命令:用户演示
响应:演示需要331密码。
命令:通过***
响应:230用户已登录。
指挥:专长
响应:支持211个扩展功能:
答复:朗恩*
答复:UTF8
答复:AUTH TLS;TLS-C;SSL;TLS-P;
答复:PBSZ
应答:protc;P
答复:CCC
答复:主持人
答复:尺寸
答复:MDTM
响应:REST流
答复:211完
状态:文本编码:System.Text.UTF8Encoding
命令:选择UTF8打开
响应:200选择UTF8命令成功-UTF8编码现在打开。
命令:SYST
答复:215 Windows\n
#下载(“/readme.txt”)
#OpenRead(“/readme.txt”,二进制,0)
命令:I型
响应:200类型设置为I。
#OpenPassiveDataStream(自动辅助,“RETR/readme.txt”,0)
命令:EPSV
响应:229进入扩展被动模式(| | | | 1027 |)
状态:连接到195.144.107.198:1027
命令:RETR/readme.txt
响应:125个数据连接已打开;换乘开始。
状态:正在处理FtpSocketStream。。。
线程0x4830已退出,代码为0(0x0)。
线程0x3f88已退出,代码为0(0x0)。
线程0x4c20已退出,代码为0(0x0)。
状态:正在处理FtpSocketStream。。。
状态:正在处理FtpSocketStream。。。
引发异常:FluentFTP.dll中的“FluentFTP.FtpException”
FluentFTP.dll中发生类型为“FluentFTP.FtpException”的未处理异常
从服务器下载文件时出错。有关更多信息,请参阅InnerException。
堆栈跟踪:

此异常最初是在此调用堆栈中引发的:
FluentFTP.FtpSocketStream.Read(字节[],int,int)
FluentFTP.FtpSocketStream.ReadLine(System.Text.Encoding)
FluentFTP.FtpClient.GetReply()
FluentFTP.FtpClient.DownloadFileInternal(字符串,System.IO.Stream,long,System.Action)
编辑: 以下是WinS的1级日志
    private static void ListViaFluentFtp()
    {
        FtpTrace.AddListener(new ConsoleTraceListener());
        var ftpClient = new FtpClient("test.rebex.net", "demo", "password");
        ftpClient.Connect();
        ftpClient.GetListing("/"); //TimeOutException here
    }