You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WinSCP从Windows传文件至Linux报错:TimeSpan溢出(时长过长)

解决WinSCP上传文件时的TimeSpan溢出问题

我一眼就看出问题出在你设置的Timeout = TimeSpan.MaxValue上!WinSCP内部处理超时逻辑时,会对这个时间值做累加操作,而TimeSpan.MaxValue已经是时间跨度的上限,再加上任何正数都会直接触发溢出,这就是你遇到Timespan overflowed because the duration is too long错误的根源。

修复方案

你只需要把超时时间改成一个合理的大值就能解决问题,比如根据上传需求设置成24小时或几个小时,既不会因超时太短中断正常传输,也不会触发溢出异常:

修改你的SessionOptions部分代码:

SessionOptions sessionOptions = new SessionOptions {
    Protocol = Protocol.Ftp,
    HostName = HostName,
    UserName = UserName,
    Password = Password,
    Timeout = TimeSpan.FromHours(24), // 替换成符合你需求的超时时间,比如2小时就写FromHours(2)
};

如果你的文件特别大,还可以给传输操作单独设置超时(可选):

TransferOptions transferOptions = new TransferOptions();
transferOptions.TransferMode = TransferMode.Ascii;
transferOptions.Timeout = TimeSpan.FromHours(12); // 针对文件传输的单独超时设置

错误原因详解

WinSCP的Session类在后台会持续检查是否超过设置的超时时间,它的逻辑是不断累加已消耗的时间来和超时阈值对比。当你设置了TimeSpan.MaxValue,哪怕只加一点点时间,都会超出TimeSpan类型能存储的最大范围,直接抛出溢出异常。所以永远不要用TimeSpan.MaxValue作为WinSCP的超时设置,选一个实际够用的最大值就好。

另外也可以顺便检查下网络连接是否稳定,如果传输频繁中断,也可能间接触发超时逻辑异常,但当前最核心的问题肯定是超时时间的设置错误。

内容的提问来源于stack exchange,提问作者venkat14

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:40:26