c# - 使用 sshnet 库的 SFTP 上传 - 处理连接问题

标签 c# .net ssh sftp ssh.net

使用 Renci 的 sshnet 库,我无法在上传文件时处理连接问题。

如果我在 UploadFile 上设置一个断点,禁用我的连接并让它运行,它就会卡在该行上。这些文件在慢速连接上可能是大文件,因此添加 OperationTimeout 会很困难。

此外,这在一致的连接上一遍又一遍地工作。有任何想法吗?谢谢!

AuthenticationMethod[] methods = new AuthenticationMethod[1];
methods[0] = new PasswordAuthenticationMethod(username, pwd);

var con = new ConnectionInfo(Config.RemoteHostName, username, methods);
con.Timeout = new TimeSpan(0, 0, 0, 30);
var client = new SftpClient(con);

client.Connect();

string fullFilePath = string.Format("{0}{1}", Config.RemoteFilePath, filename);
client.BufferSize = 15000;
client.UploadFile(new MemoryStream(buffer), fullFilePath);
client.Disconnect();

最佳答案

传输文件时,SftpClient.OperationTimeout 确定库等待单个缓冲区读/写操作的时间(默认最大 64 KB,参见 SftpClient.BufferSize ).不是等待整个传输完成的时间。

因此您可以安全地将其从默认的“无限”更改为一些有意义的值。

关于c# - 使用 sshnet 库的 SFTP 上传 - 处理连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25736589/

相关文章:

http - Rust 中基于 SSH 的 TCP 隧道

bash - SSH 无法解析 bash 脚本中的主机名

c# - 'AnyCPU' 平台目标上的内存分配模式

c# - 使用 lambda 语法与匿名类型进行多个 linq 连接

c# - 搜索日期范围内的票证字段

.net - 从用户输入的文本中提取(多个)电子邮件为 MailAddress 格式 (.NET)

c# - WPF MVVM - 刷新 TreeView

linux - Bash、变量和转义符号

c# - 将托管控制托管为 CWnd 时应用程序挂起

C# - 遍历 Repeater 控件并访问通过 DataBinder.Eval() 添加的值