首页 > 解决方案 > FluentFTP GetListing 不返回任何结果

问题描述

我似乎无法从 / 的 FTP 服务器获取任何列表。(FileZilla 显示目录和文件)。

我得到了这个代码:

                FtpClient ftpConn = new FtpClient();
                ftpConn.Host = FtpServer;
                ftpConn.Port = FtpPort;
                ftpConn.Credentials = new System.Net.NetworkCredential(Username, Password);
                ftpConn.SslProtocols = System.Security.Authentication.SslProtocols.Tls12;
                ftpConn.EncryptionMode = FtpEncryptionMode.Implicit;
                ftpConn.ValidateCertificate += new FtpSslValidation(Client_ValidateCertificate);
                ftpConn.BulkListing = false;
                //ftpConn.DataConnectionType = FtpDataConnectionType.AutoPassive;
                ftpConn.Connect();

                FtpListItem[] FtpFolders = null;

                FtpFolders = ftpConn.GetListing(Folder);

但它不起作用。我尝试了 FTP 选项,但没有得到任何结果。还有什么建议吗?

标签: c#ftpsfluentftp

解决方案


根据您的代码,
由于无法连接到 FTP 服务器,您无法获得任何结果。

这是您错过的内容,请参阅:FluentFTP 的常见问题解答部分
您可能有证书(*.crt, *.cer) 文件,将其带入您的源代码,如下所示。

ftpConn.ClientCertificates.Add(new X509Certificate2(@"C:\ftpServer.crt"));

如果您的证书文件没有根链。(例如,由您自己制作或如果它是私人证书文件)。
您需要在以下位置添加更具体的代码,

ftpConn.ValidateCertificate += new FtpSslValidation( Client_ValidateCertificate );

private void Client_ValidateCertificate(FtpClient control, FtpSslValidationEventArgs e)
{            
    if (e.PolicyErrors == SslPolicyErrors.None || e.Certificate.GetRawCertDataString() == "Use this condition for your situation")
    {
        e.Accept = true;
    }
    else
    {
        if (e.PolicyErrors == SslPolicyErrors.RemoteCertificateChainErrors)
        {
            //In this case, you need to choose connect or not. If your certificate file doen't have root chain.
        }
        else
        {
            //throw new Exception($"{e.PolicyErrors}{Environment.NewLine}{GetCertificateDetails(e.Certificate)}");
        }
    }
}

PS:如果你的 FTP 服务在 Windows 上,你别无选择,但如果它在 linux 或 unix 上工作,你可以使用 SFTP 和“Renci.SshNet.

更新:现在 windows 支持 openSSH,所以我们可以使用 sftp。 为 Windows Server 2019 和 Windows 10 安装 OpenSSH


推荐阅读