我正在尝试使用以下代码获取FTPS FileZilla服务器的目录列表:
ftpRequest = (FtpWebRequest)FtpWebRequest.Create(host + "/" + directory);
ftpRequest.EnableSsl = true;
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateCertificate);
ftpRequest.Credentials = new NetworkCredential(user, pass);
ftpRequest.UseBinary = true;
ftpRequest.UsePassive = true;
ftpRequest.KeepAlive = true;
ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
执行
FtpWebResponse)ftpRequest.GetResponse()
时出现异常:当我切换到普通的FTP连接时。一切正常。
我是否错过了建立此FTPS连接的东西?
感谢帮助
最佳答案
隐式FTPS 是,而不是FtpWebRequest
类支持的(请参阅here)。
当EnableSsl
设置为true时,它实际上会触发服务器的AUTH TLS
命令,要求启动显式FTPS session 。
在您的情况下,您必须将Filezilla服务器配置为使用显式FTPS。该过程记录在Filezilla Wiki上