连接ftp操作上下载文件后短暂无法被ftp所在服务器访问

服务器A 运行着接口项目,服务器B 开启了FTP
服务器A 通过接口连接ftp后还正常。发送下载文件后。服务器B无法访问服务器A。一分钟后又恢复正常

我是使用FluentFTP操作的ftp

简单连接一切正常

 var client = new FluentFTP.FtpClient(_option.host, _option.username, _option.password, _option.port);
            client.AutoConnect();

            return Ok();

操作上传文件

 var base64byte = Convert.FromBase64String(@"");

            using var client = new AsyncFtpClient(_option.host, _option.username, _option.password, _option.port);
            //client.Config.DataConnectionType = FtpDataConnectionType.PASV;
            //client.Config.PassiveBlockedPorts = new List<int> { 12037 }.ToArray();
            //await client.AutoConnect();
            await client.Connect();
            //var ip = client.Config.SocketLocalIp;
            var ftp = await client.UploadBytes(base64byte, "cs/imagesGoods/测试图片2023年03月23日102251.png", FtpRemoteExists.NoCheck, true);
            await client.Disconnect();
            return Ok(ip);

操作下载文件

  using var client = new AsyncFtpClient(_option.host, _option.username, _option.password, _option.port);
            await client.AutoConnect();
            //client.Config.DataConnectionType = FtpDataConnectionType.PORT;
            var ftp = await client.DownloadDirectory("C:\\Users\\buzhiliyi\\Desktop\\ftp", "cs/imagesGoods", FtpFolderSyncMode.Update);
            await client.Disconnect();
            return Ok();

在服务器B telnet 服务器A 失败,得等一分钟才能继续访问

img

想问问有没有什么解决办法

该回答引用GPTᴼᴾᴱᴺᴬᴵ
看起来你在服务器A上下载文件之后,在服务器B上无法访问下载的文件。这可能是因为FTP服务器使用了主动模式(active mode),在主动模式下,FTP服务器尝试将数据连接从FTP服务器发起到FTP客户端,但由于防火墙等原因,这可能会导致连接失败。
-
你可以尝试使用FTP被动模式(passive mode)来解决此问题。在FTP被动模式下,FTP服务器会将数据连接从FTP客户端发起到FTP服务器,这通常会减少连接问题。
-
对于FluentFTP,可以通过将FtpClient.DataConnectionType属性设置为FtpDataConnectionType.PASV来启用FTP被动模式,如下所示:

client.DataConnectionType = FtpDataConnectionType.PASV;

如果仍然无法解决问题,你可能需要检查服务器防火墙设置,以确保FTP服务器可以接受来自FTP客户端的数据连接。

这个问题可能是由于您的FTP服务器的超时设置导致的,您可以尝试更改FTP服务器的超时设置,