【问题标题】:C# Renci.SshNet.Sftp Connect throwing ArgumentNullExceptionC# Renci.SshNet.Sftp Connect 抛出 ArgumentNullException
【发布时间】:2015-10-19 13:53:41
【问题描述】:

我正在使用 Renci.SshNet.Sftp 连接到 SFTP。当我尝试调用sftpClientObject.Connect() 时出现以下错误。请在错误下方查找。几天前它工作正常。检查了身份验证细节,它是完美的。

var _sftpClient = new SftpClient(_hostName, _userName, _password);
using (_sftpClient)
{
    _sftpClient.Connect();
    // Other code to follow
}

错误:
值不能为空。
参数名称:指定数组中至少有一个元素为空。

异常堆栈跟踪:

   at System.Threading.WaitHandle.WaitAny(WaitHandle[] waitHandles, Int32 millisecondsTimeout, Boolean exitContext)
   at System.Threading.WaitHandle.WaitAny(WaitHandle[] waitHandles, TimeSpan timeout, Boolean exitContext)
   at System.Threading.WaitHandle.WaitAny(WaitHandle[] waitHandles, TimeSpan timeout)
   at Renci.SshNet.Session.WaitHandle(WaitHandle waitHandle)
   at Renci.SshNet.PasswordAuthenticationMethod.Authenticate(Session session)
   at Renci.SshNet.ConnectionInfo.Authenticate(Session session)
   at Renci.SshNet.Session.Connect()
   at Renci.SshNet.BaseClient.Connect()
   at SftpPoller.FileTransferClient.ProcessFilesInSftp(TextWriter log) in 

但是当我使用以下代码时,它起作用了:

var methods = new AuthenticationMethod[1];
methods[0] = new PasswordAuthenticationMethod(_userName, _password);
var con = new ConnectionInfo(_hostName, _userName, methods) {Timeout = new TimeSpan(0, 0, 0, 60)};
_sftpClient = new SftpClient(con);

谁能帮我解决这个问题?

谢谢

【问题讨论】:

  • 你能告诉我们异常堆栈跟踪吗?
  • 您确定_hostName_userName_password 都不为空吗?
  • _hostName、_userName、_password 不为空。
  • 有什么不同?我假设Timeout,否则没有区别。
  • 是的。不知道为什么另一个有效

标签: c# ssh ssh.net


【解决方案1】:

似乎唯一可以想象的场景是,当PasswordAuthenticationMethod.Authenticate 可以将未初始化的等待句柄传递给WaitHandle.WaitAny 时,会话在身份验证进行时关闭。

如果会话由于超时而关闭,设置更高的超时时间可以解决问题,正如您自己发现的那样。

设置超时的更简单的代码是:

var _sftpClient = new SftpClient(_hostName, _userName, _password);
_sftpClient.ConnectionInfo.Timeout = TimeSpan.FromSeconds(60);

您似乎使用的是旧版本的 SSH.NET(可能是 NuGet 中提供的 2013.4.7 版本)。由于代码的相关部分在以后的版本中进行了重构,升级也可能会解决这个问题。无论如何你都应该这样做,因为 NuGet SSH.NET 包真的很旧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    相关资源
    最近更新 更多