Renci SSH . net SFTP -创建文件时,SFTP服务器上没有可用空间永远挂起



我正在使用Renci SSH . net SFTP库上传/下载文件到SFTP服务器。

最近我遇到了意想不到的情况-文件上传挂起并保持这种状态几个小时-服务器上的文件被创建,但大小为0字节。

后来,服务器管理员承认他们服务器上的可用空间快用完了,所以看起来这就是原因。

但我的问题是-为什么SFTP客户端没有抛出任何异常,而不是超时,什么都没有?

上传文件到SFTP的代码如下:

try
{
using (var client = new SftpClient(account.Host, account.Username, new[] { privateKey }))
using (var fileStream = File.OpenRead(localFilePath))
{
client.Connect();
if (!client.Exists($"/{account.DirectoryPath}/{ftpDirectory}"))
client.CreateDirectory($"/{account.DirectoryPath}/{ftpDirectory}");
client.UploadFile(fileStream, ftpFilePath);
client.Disconnect();
}
}
catch (Exception ex)
{
// exception handling
}

如何防止未来发生此类事件?

Renci SFTPClient默认有30秒的连接超时,但在这种情况下没有触发。我想在上传文件之前检查一下可用空间,但是我发现库也不支持这种功能。

那么,我有什么选择?提前感谢您的帮助。

看起来问题的原因是SftpClient中的OperationTimeout参数没有设置-默认情况下它是无穷大的

最新更新