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

时间:2014-07-11 09:27:04

标签: wcf iis ftp

我需要编写一个连接到FTP服务器的应用程序。此FTP服务器不允许被动模式连接。我可以使用Filezilla连接到FTP服务器。

我开发了一个C#WCF服务,它使用FTPWebRequest类连接到这个FTP服务器。     以下是FTPWebRequest对象的基本设置:

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

当我从Visual Studio运行WCF服务(Ctrl + F5)时,它连接到FTP服务器并下载所需文件而没有任何问题

但是当我在本地IIS 7.5中托管服务时,它无法连接到FTP服务器并出现以下错误:

  

远程服务器返回错误:(425)无法打开数据连接。

在谷歌上搜索这个问题后,我试着玩防火墙设置,但没用。不确定它是否与某些IIS安全问题或其他问题有关。

任何帮助都将受到高度赞赏

4 个答案:

答案 0 :(得分:2)

这是我的方式:

启动\控制面板\ Windows防火墙\允许的程序。

下面!在您的应用程序中勾选复选框以允许它通过Windows防火墙。 记得!勾选复选框"家庭/工作(私人)"以及复选框" Public"。

祝你好运!

答案 1 :(得分:1)

这是复杂的解决方案

第1步 单个ftp(非ftps)使用两个网络通道(端口和端口范围)。 一个(tcp:21)用于auth,第二个用作数据的数据通道。

在iis上配置ftp时,打开21端口进行身份验证和控制通道,然后在iis控制面板上打开" FTP防火墙支持"指定数据的端口范围(5000-6000)和与ftp-server结合的网络接口的外部ip。

第2步 最后,在Windows防火墙中打开tcp:21并创建custon规则,允许连接tcp:5000-6000。重启系统(或只是重启服务)。

这就是全部。

PS。请记住,iis上的ftp使用tcp:21表示control / auth,tcp:5000-6000表示数据。 tcp:5000-6000可能是iis manager 1st中的更改,并在Windows防火墙中打开第二个。

答案 2 :(得分:0)

我评论了这个设置:

  

UseBinary,Proxy,KeepAlive,UsePassive

现在效果很好:

            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();

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

答案 3 :(得分:-1)

同样的问题发生在我身上。所以我做了以下操作并修复了它: - 我重新启动了整个FTP服务器 - 重启后,我启动了Internet Information Services(IIS)6.0 Manager。默认FTP站点已停止。我开始了。这就解决了!