FTP客户端Filezilla和Ftpuse可以工作,但Windows资源管理器无法使用PASV模式

FTP客户端Filezilla和Ftpuse可以工作,但Windows资源管理器无法使用PASV模式,windows,ftp,explorer,passive-mode,Windows,Ftp,Explorer,Passive Mode,我使用.NET4.0创建了一个自定义FTP服务器。我在同一台Windows7计算机上运行客户端和服务器,并且我的防火墙被完全禁用。我可以使用FileZilla和FtpUse连接到它,建立PASV模式,浏览文件夹的内容。尝试通过Windows资源管理器连接时出现问题。我可以成功登录,但当Explorer发送PASV命令(请参阅下面的客户端/服务器交换)时,Explorer会弹出一个消息框,显示“FTP文件夹错误”,“在FTP服务器上打开该文件夹时出错。请确保您有权访问该文件夹”。下面的详细信息是它

我使用.NET4.0创建了一个自定义FTP服务器。我在同一台Windows7计算机上运行客户端和服务器,并且我的防火墙被完全禁用。我可以使用FileZilla和FtpUse连接到它,建立PASV模式,浏览文件夹的内容。尝试通过Windows资源管理器连接时出现问题。我可以成功登录,但当Explorer发送PASV命令(请参阅下面的客户端/服务器交换)时,Explorer会弹出一个消息框,显示“FTP文件夹错误”,“在FTP服务器上打开该文件夹时出错。请确保您有权访问该文件夹”。下面的详细信息是它从服务器收到的最后两个响应。我找到了这个()更新并安装了它,但它没有帮助。有人知道这是什么吗?在从PASV命令返回响应之前,我打开了TCP侦听器,因此我认为这不是时间问题

<< 220 ***********.
>> USER Domain\******
<< 331 Password required.
>> PASS *******
<< 230 Domain\****** logged in.
>> opts utf8 on
<< 200 OPTS UTF8 command successful - UTF8 encoding now on.
>> syst
<< 215 Windows_NT.
>> site help
<< 200
<< 200 End of help.
>> PWD
<< 257 "/".
>> TYPE A
<< 200 Type set to A.
>> PASV
<< 227 Entering Passive Mode (10,0,0,4,7,100)
>用户域\******
>通过*******
>选择utf8打开
>系统
>站点帮助
PWD
>A型
>PASV

起初,我认为这个问题可能与

但我尝试提前打开被动端口,但没有任何帮助。相反,问题与Windows资源管理器的严格性有关。作为227响应的一部分提供的IP地址必须与客户端最初连接的FTP站点的地址相同。换句话说,如果客户端使用

ftp://localhost 
(解析为127.0.0.1),PASV响应提供的IP地址必须为127.0.0.1-否则,Windows资源管理器将出错。这并不是说被动端口不能用IPAddress打开。任何-它可以:

var listener = new TcpListener(IPAddress.Any, 0)
但是,结果返回的地址仍然必须是127.0.0.1(以上面的示例为例)。如果客户端最初与机器的IP连接,例如10.x.x.x,则227响应返回的IP地址也必须是10.x.x.x

菲利齐拉一定会更宽容一些