【问题标题】:Trying to close an FTP connection in .NET just hangs尝试在 .NET 中关闭 FTP 连接只是挂起
【发布时间】:2016-05-03 06:26:11
【问题描述】:

我正在尝试关闭与某个 ftp 的 ftp 连接,但它只是挂起……永远!

  • 它只发生在 1 个 FTP 服务器上,所以我假设该服务器的设置有问题。代码在其他服务器上运行良好。
  • 仅当我上传的文件很大 (180mb) 时才会发生。当文件较小时,连接可以正常关闭。
  • 目标 FTP 服务器正在运行 220 ProFTPD 1.3.4a 服务器 (Debian)
  • 对于大文件,开始时间:15:53:18.701。结束时间:16:00:22.179;大约 7 分钟。
  • 180MB 文件 100% 上传.. 所以我尝试关闭连接以完成传输,然后继续我的代码。

代码如下:

using (var ftpStream = await ftpWebRequest.GetRequestStreamAsync())
        {
            await inputStream.CopyToAsync(ftpStream);

            _loggingService.Debug("Closing service....");
            ftpStream.Close();
            _loggingService.Debug("Closed..");
        }

是的,我知道我真的不需要打电话给.Close();,因为我在using 声明中,但我这样做是为了查明问题。

【问题讨论】:

  • 你的方法签名是什么样的?
  • Enable logging 和 show 是日志。 + 您尝试等待多长时间? + 为简单起见,您可以使用同步流进行调试吗?
  • 您是否正在使用 FTP over SSL?
  • @Castaglian nope - 不是。
  • @MartinPrikryl 老兄。伙计!很棒的建议!!所以我打开它并开始看到FtpWebRequest 低流量.. 但没有什么特别突出的。我看到了 BeginFtpWebRequest 或者它为 STOR 调用的任何东西,然后什么都没有。请注意,这是在 Azure Web 作业中,所以所有这些 frickin webjob-http 日志记录噪音/垃圾邮件我必须与之抗争/尝试过滤掉......

标签: c# .net ftp proftpd


【解决方案1】:

试试这个:

// after finished uploading
ftpWebRequest.Abort();   // <=== MAGIC PART
// before ftpStream.Close()

来自here(以及this SO answer)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多