Я пытаюсь загрузить файл на сервер FileZilla через ftps по протоколу TLS. На сервере порты 20 и 21 закрыты. Единственный способ, которым мне удалось подключиться к серверу, это использовать FluentFTP, но я не смог загрузить файл из-за какой-то ошибки сервера FileZilla.
https://github.com/robinrodricks/FluentFTP/issues/335
https://forum.filezilla-project.org/viewtopic.php?t=51601
public static void UploadTest(
string pathUploadFile, string addressIP, int port, string location,
string userName, string password)
{
FtpClient ftp;
Console.WriteLine("Configuring FTP to Connect to {0}", addressIP);
ftp = new FtpClient(addressIP, port, new NetworkCredential(userName, password));
ftp.ConnectTimeout = 600000;
ftp.ReadTimeout = 60000;
ftp.EncryptionMode = FtpEncryptionMode.Implicit;
ftp.SslProtocols = SslProtocols.Default | SslProtocols.Tls11 | SslProtocols.Tls12;
ftp.ValidateCertificate += new FtpSslValidation(OnValidateCertificate);
ftp.Connect();
// upload a file
ftp.UploadFile(pathUploadFile, location);
Console.WriteLine("Connected to {0}", addressIP);
ftp.Disconnect();
void OnValidateCertificate(FtpClient control, FtpSslValidationEventArgs e)
{
// add logic to test if certificate is valid here
e.Accept = true;
}
}
Можно ли обойтись без нарушения уровня безопасности? Если нет, то есть ли другая бесплатная библиотека, которая поддерживает загрузку файлов с TLS / SSL? Я тоже пробовал это, но это не сработало.
https://docs.microsoft.com/en-us/dotnet/api/system.net.ftpwebrequest.enablessl
Спасибо.