我的代码的目的是将一些数据上传到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);
}
答案 0 :(得分:2)
Afaik,WebClient
本机不支持TLS上的FTP(FTPS)(实际上,它在内部内都支持它,但没有API来启用它)。
设置ServicePointManager.SecurityProtocol
无济于事。绝对不要将其设置为SecurityProtocolType.Ssl3
!
ftps://
前缀,例如此处显示的示例:Force WebClient to use SSL。,或者使用WebClient
代替FtpWebRequest
,它本机支持基于TLS的FTP。
使用这样的代码:
Upload and download a binary file to/from FTP server in C#/.NET
然后添加
request.EnableSsl = true;