FTP Timeout on NLST when directory is empty编辑:了解到Webmethods实际上使用NLST,而不是LIST,如果这很重要 我们的企业使用WebMethods集成服务器来处理我们的大部分出站通信,其FTP功能尚有待改进。我们遇到的问题可能是WebMethods特有的,但是如果有人能指出可能导致这种情况的原因,我将不胜感激。 当轮询我们合作伙伴的两个FTP服务器时,我们连接没有问题,但是在空目录(没有文件和子目录)上执行NLST时,它会超时。实际错误是:
它是在调用pub.client.ftp:ls服务期间抛出的。我已经使用多个FTP客户端登录到相同站点,没有问题。我已经在Windows,FileZilla和lftp中使用了默认的FTP客户端。一切都没有问题。据我所知,这些服务器本身不是相同的FTP服务器软件。一个是Microsoft FTP,另一个是我不确定的,但绝对不是Microsoft。 知道在空目录上等待NLST响应时,FTP客户端超时的原因是什么? FTP服务器的可见响应似乎相同,但是NLST对我不知道的空目录的响应方式有所不同吗? 在这两个服务器上,此问题是一致的。在其中包含文件或子目录的目录上,所有功能均正常运行,但在空目录下则不能正常运行。 任何想法或方向将不胜感激。 谢谢! 埃里克·西普尔 我在WebMethods IS版本6.5更新WmPRT_6-5-1_SP1,IS_6-5_SP3中尝试了此操作。 第一次成功。 我在FTP服务器(Debian的默认ftpd)上打开了调试功能。 WebMethods的NLST尊重传递给它的主动/被动参数。 NLST命令没有什么特别之处,也没有在空目录下的正确行为-如果LIST有效,那么RETR,STOR和NLST也应如此。如果NLST使用非空目录,则应使用空目录。 所以我的猜测是:
防火墙供应商在FTP方面有点任性... 仅作记录,这是活跃的NLST应该发生的情况
...并处于被动模式
Guillermo Vasconcelos的回答正确。有两种FTP模式,主动模式和被动模式。默认的FTP模式是活动的。活动服务器要求服务器通过某些TCP / IP端口连接回客户端。这不适用于防火墙,因为可能会阻塞此端口,或者如果您位于带有NAT(未映射)的路由器后面。 如果改用被动(PASV)模式,则不应挂起。
我不确定这是否是相同的问题,但是不久前我在Java(commons.net)中使用另一个FTP客户端时也遇到了类似的症状。原来是由连接的主动/被动模式引起的。 FTP要求通过防火墙同时打开指定的端口和该端口上的端口。当我遇到webMethods超时问题时,这是因为防火墙没有打开返回端口。 霍华德 我明天将在此处进行维护时运行一些将设置设为被动的新测试,但是我不确定这是问题所在。如果该目录中有文件或子目录,我们就能获得目录列表。仅当我们要进行NLST操作的目录为空时,它才会失败。 主动/被动差异只会在空目录中体现出来,还是存在另一种可能性? |