FluentFTP - 连接时出错“尝试从套接字流读取数据超时!”

Vij*_*rya 6 .net c# ftp ftps fluentftp

得到

尝试从套接字流中读取数据超时!

使用 FluentFTP 连接到 FTP 时。

下面是我用来连接的源代码:

Console.WriteLine("Configuring FTP to Connect to {0}", hostname);
ftp = new FtpClient(hostname,port,new NetworkCredential(username,password));               
ftp.ConnectTimeout = 600000;               
ftp.ReadTimeout = 60000;
ftp.EncryptionMode = FtpEncryptionMode.Explicit;
ftp.SslProtocols = System.Security.Authentication.SslProtocols.Tls;
ftp.ValidateCertificate += new FtpSslValidation(OnValidateCertificate);
ftp.Connect();
Console.WriteLine("Connected to {0}", hostname);

ftp.SetWorkingDirectory(foldername);
Console.WriteLine("Changed directory to {0}", foldername);
Run Code Online (Sandbox Code Playgroud)
void OnValidateCertificate(FtpClient control, FtpSslValidationEventArgs e)
{
    // add logic to test if certificate is valid here
    e.Accept = true;
}
Run Code Online (Sandbox Code Playgroud)

用于成功连接的 FileZilla 日志文件。我可以通过 FileZilla 连接该位置。日志片段如下:

Console.WriteLine("Configuring FTP to Connect to {0}", hostname);
ftp = new FtpClient(hostname,port,new NetworkCredential(username,password));               
ftp.ConnectTimeout = 600000;               
ftp.ReadTimeout = 60000;
ftp.EncryptionMode = FtpEncryptionMode.Explicit;
ftp.SslProtocols = System.Security.Authentication.SslProtocols.Tls;
ftp.ValidateCertificate += new FtpSslValidation(OnValidateCertificate);
ftp.Connect();
Console.WriteLine("Connected to {0}", hostname);

ftp.SetWorkingDirectory(foldername);
Console.WriteLine("Changed directory to {0}", foldername);
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

void OnValidateCertificate(FtpClient control, FtpSslValidationEventArgs e)
{
    // add logic to test if certificate is valid here
    e.Accept = true;
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ryl 6

在 FileZilla 中,您将连接到隐式FTPS 端口 990。

如果您也在 C# 中使用此端口,则不能使用FtpEncryptionMode.Explicit.

使用FtpEncryptionMode.Implicit.

尽管您最好连接到端口 21 并继续使用FtpEncryptionMode.Explicit,如果该端口可用。