使用"ftps"连接FTP服务器前缀
本文关键字:quot 服务器 前缀 FTP ftps 使用 连接 | 更新日期: 2023-09-27 18:07:29
我已经用尽了我所有的资源,所以我来寻求帮助。
我有一个客户端,给了我一个用户名和密码到他们的ftp站点。但是,在web上访问它使用https://ftps.sitename.com
访问FileZilla,我可以使用ftps://或sftp://
我的问题是我不知道我需要做什么才能在我的程序中访问它。
现在我有这样的代码:
var ftpFilePath = @"ftp://ftps.sitename.com/file.txt";
var request = (FtpWebRequest)WebRequest.Create(ftpFilePath);
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.Credentials = new NetworkCredentials(username, pass);
// enable SSL?
var response = (FtpWebResponse)request.GetResponse();
// Other code
它目前在GetResponse上失败,错误是无法连接到远程服务器。如果我使用"ftps://ftpss.sitename.com ",那么我得到一个错误抱怨前缀。
这是我第一次处理这种类型的问题,我一定错过了一些小的东西。如有任何帮助,不胜感激。
编辑:我最终使用了WinSCP软件包,并遵循以下教程:https://winscp.net/eng/docs/library_session_getfiles
我遇到的两个问题是,我没有ssh密钥,所以我暂时设置
GiveUpSecurityAndAcceptAnySshHostKey = true
然后我遇到了一个小问题,确保运行VS的进程可以访问我试图写入文件的路径
FTPS有两种类型:隐式和显式。它们不兼容。
隐式FTPS默认使用990端口,并且从一开始就假设所有内容都是SSL/TLS,而显式FTPS以普通FTP连接到端口21,然后在发送AUTH命令时切换到SSL/TLS。
FileZilla使用前缀'ftps'为隐式ftps和'ftpes'为显式ftps,所以如果它在FileZilla中使用ftps://,那么这表明服务器支持隐式ftps。net可能将ftps://解释为显式FTP,因为这是ftps的'现代'形式(隐式ftps是遗留的)。
所以这可能是你的问题。您可能正在尝试使用客户端代码(在。net中)连接到端口为990的遗留(隐式)FTPS服务器,该代码假设端口为21的"现代"FTPS。
可能没有一个微不足道的解决方案,因为我认为WebRequest既不支持隐式FTPS也不支持SFTP。除非您可以让服务器管理员添加对显式FTPS的支持,否则您可能必须使用专用FTPS客户端,例如我是开发人员之一的edtFTPnet/PRO,它支持隐式FTPS。
在您的项目中,将目标框架设置为4.5.2或以上
设置安全协议使用tls1.2:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;