FluentFTP能连接却报未将对象引用设置到对象的实例。

本来项目中用的好好的FTP下载传输,不知道从什么时候开始读取不到了,也上传不了。实际读取的是本地缓存的。因为同事上传不了文件和图片才发现。上源码!

#region 下载文件 
static byte[] DownloadFile(string downPath)
        {
            byte[] outBuffs;
            using (FtpClient conn = new FtpClient("ftp://" + ServerPath + "/", remoteUser, remotePass))//serverPath是服务器ip 无端口。FTP用户,FTP密码
            {
                conn.Connect();//开启连接

          //conn.DataConnectionType = FtpDataConnectionType.PORT;//主动模式
          //conn.DataConnectionType = FtpDataConnectionType.PASV;//被动模式

                bool flag = conn.Download(out outBuffs, downPath); //downPath数据“/Upload/Img/234678.jpg”  //这里报错,未将对象引用到对象实例
            }
            return outBuffs;
        }
#endregion

  解决:

  1、下载FluentFTP源码,几经调试。发现是FTP被动连接报425错误。

  2、FTP425错误出现的可能原因有多种,我个菜鸡就不清楚了(自行百度)

  3、我这里是因为服务器可能没设置端口范围,可能服务器自动开的端口冲突了(重启就行了,不过也是临时的,下次还是会出现。还是要设置下端口范围以避免此类情况)

  4、FluentFTP默认为不支持IPV6的被动模式。设置模式DataConnectionType

  FluentFTP,指定连接模式:DataConnectionType

  DataConnectionType=FtpDataConnectionType.PORT;//主动模式

  DataConnectionType=FtpDataConnectionType.PASV;//被动模式

  DataConnectionType=FtpDataConnectionType.AutoPassive;//默认被动模式。这种类型的数据连接尝试使用 EPSV 命令,如果服务器不支持 EPSV,它会在放弃之前回退到 PASV 命令,除非您通过 IPv6 连接,在这种情况下不支持 PASV 命令。

 

posted @ 2022-04-25 17:27  兮去  阅读(471)  评论(0编辑  收藏  举报