WinSCP .NET 库 FTP 传输失败 "IP addresses of control and data connection do not match"

WinSCP .NET library FTP transfer fails with "IP addresses of control and data connection do not match"

我已经使用 WinSCP .NET 程序集实现了 FTP 代码,并将其托管在 Azure AppService 上。

它在本地和 Azure 上工作。

但在极少数随机时间,当托管在 Azure 上时,它会抛出以下错误:

Error transferring file 'D:\local\Temp\test_settings.txt'. Server sent passive reply with unroutable address 10.YYY.YYY.YYY, using host address instead. Copying files to remote side failed. Rejected data connection for transfer of "/test_settings.txt", IP addresses of control and data connection do not match

因为 IP 以 10 开头。这是否意味着它在 FTP 服务器网络中是本地的? 我可以做些什么来改进实施吗?

您认为该方案在多个请求并发使用时会不会有问题?

我的代码是 Simple C# example 的副本,具有以下设置:

SessionOptions sessionOptions = new SessionOptions
{
  Protocol = Protocol.Ftp,
  UserName = username,
  Password = password,
  GiveUpSecurityAndAcceptAnyTlsHostCertificate = true,
  FtpSecure = FtpSecure.Explicit,
  HostName = 'ftp.domain.com'
};

IP addresses of control and data connection do not match

这是来自 FileZilla FTP 服务器的消息。这是一种安全措施。这可能表明您的应用服务实例的外部 IP 地址在传输过程中发生了变化。或者,当然,它可能表明您的连接被劫持(这是服务器试图检测到的)。

与WinSCP无关

不知道Azure应用服务的IP地址能不能固定。如果没有,您所能做的就是重新连接并重试传输。我相信任何 FTP 客户端都会遇到同样的问题。也许使用 IPv6 连接,问题就不会发生。但我不确定,这只是一个疯狂的猜测。虽然您不能使用 WinSCP 强制使用 IPv6(只能通过完全禁用 IPv4,但我不知道应用程序服务是否可行)。