繁体   English   中英

尝试列出ftps服务器上的文件时,FluentFTP抛出“System.IO.IOException:Authentication failed”

FluentFTP throws “System.IO.IOException: Authentication failed” when trying to list files on ftps server

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

说明使用FluentFTP连接到FileZilla FTPS服务器时,我们收到System.IO.IOException: Authentication failed because the remote party has closed the transport stream. 在尝试列出文件时。

我们可以建立初始连接,我们可以登录,但是当FluentFTP尝试通过EPSV建立数据连接时,它会因该异常而出错。

到目前为止,我们的研究似乎指向TLS恢复失败。 FTPS服务器坚持数据连接从控制连接恢复TLS会话,这似乎是失败的。 奇怪的是,这只发生在Linux或WSL上的dotnetcore上。 在Windows上的dotnetcore上一切正常。

版本 :DotNetCore 2.1.5 FluentFTP 19.2.2

OS Ubuntu 18.04 / Windows 10 WSL Ubuntu 18.04

演示代码

public async Task We_should_be_able_to_connect_and_list_files()
{
    var client = new FtpClient("myhost", "user", "pass");
    client.EncryptionMode = FtpEncryptionMode.Explicit;
    client.SslProtocols = SslProtocols.Tls;
    client.ValidateCertificate += (c, e) => { e.Accept = true; };

    await client.ConnectAsync();
    var items = await client.GetListingAsync("/");

    Assert.NotEmpty(items);
}

例外

System.IO.IOException : Authentication failed because the remote party has closed the transport stream.
   at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest)
--- End of stack trace from previous location where exception was thrown ---
   at System.Net.Security.SslState.ThrowIfExceptional()
   at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult)
   at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result)
   at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult)
   at System.Net.Security.SslStream.<>c.<AuthenticateAsClientAsync>b__46_2(IAsyncResult iar)
   at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)
--- End of stack trace from previous location where exception was thrown ---
   at FluentFTP.FtpSocketStream.ActivateEncryptionAsync(String targethost, X509CertificateCollection clientCerts, SslProtocols sslProtocols)
   at FluentFTP.FtpClient.OpenPassiveDataStreamAsync(FtpDataConnectionType type, String command, Int64 restart)
   at FluentFTP.FtpClient.OpenDataStreamAsync(String command, Int64 restart)
   at FluentFTP.FtpClient.GetListingAsync(String path, FtpListOption options)

FluentFTP日志

...

# GetListingAsync("/", Auto)
Command:  TYPE I
Response: 200 Type set to I

# OpenPassiveDataStreamAsync(AutoPassive, "MLSD /", 0)
Command:  EPSV
Response: 229 Entering Extended Passive Mode (|||50992|)
Status:   Connecting to ***:50992
Command:  MLSD /
Response: 150 Opening data channel for directory listing of "/"
Status:   Disposing FtpSocketStream...

我们做错了什么?

问题暂未有回复.您可以查看右边的相关问题.
6 尝试获取文件名时抛出 System.IO.IOException

我正在尝试计算具有大量数据的指定目录中上次写入时间早于 10 分钟的所有文件的总大小。 这是我在下面尝试过的代码: 这在我指定本地路径时有效,但在指定网络路径时向我抛出网络名称不再可用IOException。 为什么会发生? 有没有办法让我可以“保持”网络路径或确保与此路径的连接不会失败? ...

8 System.IO.IOException

我试图将文件从临时目录复制到用户选择的文件夹。 我正在使用C#,并且我使用的文件夹为空。 我正在使用的代码是: srcPath是一个临时文件夹 landscapebox是一个文本框,其中将输入目录。 它应该看起来像: 但是我得到了: 救命! 我不知道我在 ...

9 尝试下载文件然后打开它并读取其内容,但它抛出 System.IO.IOException

因此,我目前正试图弄清楚如何下载文件,然后在下载后立即阅读。 我的代码会下载它,但是当我尝试使用 File.ReadAllText 时,它不允许我读取它,因为它说它正在被另一个进程使用(完全错误:“进程无法访问文件 'C:... ...\\netcoreapp3.1\\ver.txt',因为它正被另 ...

2020-01-30 03:28:33 1 74   c#
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM