最近接了个新任务,其中有个环节是使用ftp上传数据到服务器,呵呵!朋友们想节省时间走捷径,FTP Server就用Windows 2008 Server内置的FTP服务搭建,结果在部署测试时报错差点崩溃,查阅大量资料也没找到合理的答案,在此存档为大家节省时间。
- 关键词:ftp port 21 pasv 501 channel windows System.Net.WebException
- 任务:FTP远程上传--使用C#编程上传数据至Windows 2008操作系统自带的FTP服务器非标准21端口
- 测试环境:
FTP Client OS:Windows 7,未使用第三方FTP Client软件;
FTP Server OS:Windows 2008,使用Windows 2008 FTP服务,FTP服务使用端口21210(非标准21端口)。
- 故障现象:
- Command下ftp登录成功后查看dir等命令出现“150 Opening ASCII mode data connection.”停滞无法继续,Ctrl+C后出现“终止所有活动的数据连接...
425 Cannot open data connection.”- System.Net.WebException: 远程服务器返回错误: (501) 参数或变量中有语法错误
- 英文类似错误:501 Server cannot accept argument
- 原因分析:
经过测试观察,放开两端防火墙对应的端口20,21,21210就正常了。
- 推论与建议:
局域网环境测试Windows FTP Server改用其它端口可正常使用PASV模式,建立ControlChannel或DataChannel,外部公网环境下Windows FTP Server与FTP Client之间必须放开两端防火墙相对应端口。