我的代码的目的是将一些数据上传到FTP位置。
使用我的代码,我不断收到一个错误,指出远程服务器需要 SSL。我使用的是大于 4 的 .NET 版本。所有其他帖子都建议我添加下面ServicePointManager
代码。
异常发生在client.UploadData
上。
还是没有骰子。任何帮助将不胜感激。
ServicePointManager.ServerCertificateValidationCallback +=
(sender,certificate, chain, sslPolicyErrors) => true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
byte[] data = stream.ToArray(); //Data I want to upload to FTP location
using (WebClient client = new WebClient())
{
client.Credentials = new NetworkCredential("*Username*", "*Password*");
client.UploadData("ftp://file.example.com/Content/file", "STOR", data);
}
Afaik,WebClient
本身不支持FTP over TLS(FTPS((它实际上在内部支持它,但没有API来启用它(。
设置ServicePointManager.SecurityProtocol
无济于事。并且绝对不要将其设置为SecurityProtocolType.Ssl3
!
- 注册
ftps://
前缀,如下所示:强制 Web 客户端使用 SSL。 -
或者代替
WebClient
,请使用FtpWebRequest
,它本机支持 FTP over TLS。使用如下代码:
在 C#/.NET 中将二进制文件上载和下载到 FTP 服务器/从 FTP 服务器下载二进制文件只需添加
request.EnableSsl = true;