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

问题描述 投票:0回答:4

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

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

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

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

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

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

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

任何帮助将不胜感激

wcf iis ftp
4个回答
2
投票

这是我的方式:

开始\控制面板\Windows防火墙\允许的程序。

这里!勾选应用程序上的复选框以允许其通过 Windows 防火墙。 记住!勾选“家庭/工作(私人)”复选框以及“公共”复选框。

祝你好运!


1
投票

这是复杂的解决方案

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

在iis上配置ftp时,打开21端口用于身份验证和控制通道,然后在iis控制面板的“FTP防火墙支持”中指定数据端口范围(5000-6000)以及与ftp服务器结合的网络接口的外部IP。

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

仅此而已。

ps。请记住,iis 上的 ftp 使用 tcp:21 进行控制/身份验证,使用 tcp:5000-6000 进行数据处理。 tcp:5000-6000 可能首先在 iis 管理器中进行更改,然后在 Windows 防火墙中打开。


0
投票

我评论了这个设置:

UseBinary、代理、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();

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


-1
投票

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

  • 我重新启动了整个 FTP 服务器
  • 重新启动后,我启动了 Internet 信息服务 (IIS) 6.0 管理器。默认 FTP 站点已停止。我开始了。这解决了它!
© www.soinside.com 2019 - 2024. All rights reserved.