带有 FtpWebRequest 的 C# FTP 上传失败并显示“534 策略需要 ssl”

问题描述

当我尝试将文件上传到 SFTP 服务器时,它显示错误

这是我的代码

string fileNameOnly = Path.GetFileName(uploadingFile);

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(HostAddress+ "/test1");
request.Method = WebRequestMethods.Ftp.UploadFile;

request.Credentials = new NetworkCredential(UserId,Password);

StreamReader sourceStream = new StreamReader(@uploadingFile);
byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
sourceStream.Close();
request.ContentLength = fileContents.Length;
filesize = ConvertBytesToMegabytes(request.ContentLength);
Console.WriteLine("hello,{0}",filesize);
// Console.WriteLine("hellosss,request.ContentLength);
Stream requestStream = request.GetRequestStream(); 
Console.WriteLine("here,requestStream);

requestStream.Write(fileContents,fileContents.Length);
filesizedownloaded = ConvertBytesToMegabytes(requestStream.Length);
Console.WriteLine("hellosss,filesizedownloaded);
worker.ReportProgress(Convert.ToInt32((Convert.ToInt32(filesizedownloaded) / filesize) * 100));

requestStream.Close();
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
FilesDetails.SelectedFileContent = "";
Console.WriteLine("Upload File Complete,status {0}",response.StatusDescription);
MessageBox.Show("File Uploaded!"," File");
response.Close();

我在 Stream requestStream = request.GetRequestStream(); 处遇到异常

错误是:

远程服务器返回错误 (534) 534 策略需要 ssl"

解决方法

您的服务器需要加密连接。

要启用加密连接,请设置 FtpWebRequest.EnableSsl

request.EnableSsl = true;

您的代码有其他问题,而且过于复杂。

有关 C# 的干净 FTP 代码,请参阅 Upload and download a file to/from FTP server in C#/.NET