问题标签 [fluentftp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - FluentFTP EPSV 错误 425 无法打开数据连接以传输“/test.csv”
我正在尝试使用 EPSV 连接类型通过 .NET 库 FluentFTP 上传文件,因为我在 HTTP/1.1 代理后面,并且数据和控制 FTP IP 地址不同。
不幸的是,调用 UploadFile 方法时出现以下错误: 响应:425 无法打开数据连接以传输“/test.csv”
相同的操作在具有相同代理设置的 FileZilla 客户端中有效,因此不会是网络问题。这是我的代码:
FluentFTP 日志文件和 FileZilla 客户端日志文件的比较显示了相同的操作。
FluentFTP 日志:
FileZilla 客户端日志:
c# - 将 FTP 文件内容读取到 C# FluentFTP 中的字符串
我的类继承自 FluentFTP,我创建了一个这样的类。我需要创建一个Read
在这个类中调用的函数。读取函数的目的是通过逐行读取我从 FTP 读取的文件的内容,向我返回一个字符串。稍后我将处理旋转字符串。FluentFTP 中有没有这样的方法?Ff 没有,我应该如何创建函数?
我不能这样写,因为Client
我正在写来自 FTP。由于我在之前的代码中从 SFTP 派生了它,因此我想使用与其类似的代码片段,但 FluentFTP 中没有这样的代码片段。我应该如何在函数中执行操作Read
?
在另一个文件中,我想这样称呼它。
c# - 使用 FluentFTP 下载并发文件会提供随机文件内容
我正在使用 FluentFTP(版本 35.0.5)在本地深度复制大型 FTP 服务器(我需要对其进行格式化以进行结构化搜索,这是不可行的)。服务器似乎很不稳定:
- 即使对于单个连接并列出包含一个或两个元素的文件夹,我也可以让客户端超时
- 在超时的情况下,我可以断开我的客户端,但是当我尝试重新连接它时,服务器说我已经达到了这个用户的最大连接数(5),
- 等等
话虽如此,我编写了一个客户端池,我设法从该服务器连接、列出和下载文件。它在边缘情况下工作得很好(比如在重新连接之前等待客户端超时等),但我仍然有一个我无法弄清楚的问题。示意性地,我有一个内部池连接的实例,例如:
我有几个同时调用的任务(大约比允许的最大连接数多一点,即上面实现中的队列大小)DownloadFileAsync
:
有了所有这些配置(我想我显然错过了什么?)有时我会得到奇怪的下载内容,比如另一个文件的内容,甚至流内容包含另一个 FTP 命令,比如"-r--r----- 1 ftp ftp 491 Jan 3 2018 file_name.csv"
. 这有点像我可以有一个最终在两个任务之间共享的客户端,并且下载内容因此会从套接字流中复制一些完全不合适的东西。
如果你们中的一些人遇到这样的问题或直接从我的代码中看到明显的错误,将不胜感激:)
我已经更仔细地跟踪了客户端,并且我意识到这更有可能是由于如何正确地将套接字流复制到内存流,例如我有典型的日志:
即我们首先正确下载文件,但是当我们处理它时,我们同时重用客户端以在另一个路径上列出文件,并且它似乎追溯影响我复制到我的流MemoryStream
(参见我的方法DownloadAsync
中提供的流)。
我不知道这是由于我对流的使用不当,是由于并发问题和糟糕的设计,还是由于从 FluentFTP 读取套接字的内部问题(我对此表示怀疑,我宁愿打赌 99%机会是我的^^)。
c# - FluentFTP:身份验证失败,因为远程方已关闭传输流
我正在使用 C# 控制台应用程序来重现该问题。这是一个.NET Framework 4.7应用程序。FluentFTP版本是 24.0.0,作为 Nuget 包安装。
这是我的代码:
我在控制台中遇到的错误(和堆栈跟踪):
我在这里想念什么?
我可以使用同一组主机/用户/密码通过 Filezilla 进行连接。在 Filezilla 中,我必须设置以下内容:
- 加密:需要基于 TLS 的隐式 FTP(在“常规”选项卡中)
- 传输模式:被动(在“传输设置”选项卡中)
当我在调试模式下运行应用程序并在函数 OnValidateCertificate 和 ServerCertificateValidationCallback 中设置断点时,不会命中这些断点。