FTP 425无法打开IIS后面的数据连接

lztngnrs  于 2023-10-19  发布在  其他
关注(0)|答案(4)|浏览(144)

我需要写一个连接到FTP服务器的应用程序。此FTP服务器不允许被动模式连接。我可以使用Filezilla连接到FTP服务器。
我已经开发了一个C# WCF服务,它连接到这个FTP服务器,使用FTPWebRequest类。以下是FTPWebRequest对象的基本设置:

ftpreq.Proxy = null;
ftpreq.KeepAlive = true;
ftpreq.UsePassive = false;

当我从Visual Studio(Ctrl+F5)运行WCF服务时,它连接到FTP服务器并下载所需文件,没有任何问题
但是当我在本地IIS 7.5中托管服务时,它无法连接到FTP服务器,并出现以下错误:
远程服务器返回错误:(425)无法打开数据连接。
在谷歌上搜索了这个问题后,我试着绕过防火墙设置,但没有用。我不知道这是否与IIS安全问题有关。
任何帮助都将不胜感激

5kgi1eie

5kgi1eie1#

这是我的方式:
开始\控制面板\ Windows防火墙\允许的程序。
在这里!勾选复选框在您的应用程序,以允许它通过Windows防火墙。记住!勾选复选框“家庭/工作(私人)”以及复选框“公共”。
祝你好运!

odopli94

odopli942#

这是复杂的解决方案
步骤1使用两个网络通道(端口和端口范围)的单个FTP(非FTP)。一个(tcp:21)用于认证,第二个,用作数据的数据通道。
当在iis上配置ftp时,打开21端口用于授权和控制通道,然后在iis控制面板的“FTP防火墙支持”中指定数据端口范围(5000-6000)和与ftp服务器结婚的网络接口的外部ip。
步骤2最后,在windows防火墙中打开tcp:21并创建custon规则,允许在tcp:5000-6000上连接。重新启动系统(或只是重新启动服务)。
就这样.
ps.只要记住,iis上的ftp使用tcp:21进行控制/授权,tcp:5000-6000进行数据。tcp:5000-6000可能是iis管理器第一次改变,然后在windows防火墙第二次打开。

dgenwo3n

dgenwo3n3#

我评论了这个设置:
二进制,代理,KeepAlive,无源
现在工作得很好:

FtpWebRequest reqFTP;
            reqFTP = (FtpWebRequest)WebRequest.Create(new Uri(ftpLocation + remoteDir));
            //reqFTP.UseBinary = true;
            reqFTP.Credentials = new NetworkCredential(ftpUser, ftpPassword);
            reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
            //reqFTP.Proxy = null;
            //reqFTP.KeepAlive = false;
            //reqFTP.UsePassive = false;
            response = reqFTP.GetResponse();
            reader = new StreamReader(response.GetResponseStream());
            string line = reader.ReadLine();

这段代码来自微软论坛:https://social.msdn.microsoft.com/Forums/en-US/079fb811-3c55-4959-85c4-677e4b20bea3/downloading-all-files-in-directory-ftp-and-c?forum=ncl

sulc1iza

sulc1iza4#

同样的问题也发生在我身上。所以我做了以下操作,并修复了它:

  • 我重启了整个FTP服务器
  • 重新启动后,我启动了Internet信息服务(IIS)6.0管理器。默认FTP站点已停止。是我先开始的这就解决了!

相关问题