gpt4 book ai didi

C# Renci.SshNet.Sftp 连接抛出 ArgumentNullException

转载 作者:行者123 更新时间:2023-11-30 21:54:14 25 4
gpt4 key购买 nike

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

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

Error:
Value cannot be null.
Parameter name: At least one element in the specified array was null.

异常堆栈跟踪:

   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);

谁能帮我解决这个问题?

谢谢

最佳答案

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

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

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

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

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

关于C# Renci.SshNet.Sftp 连接抛出 ArgumentNullException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33216301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com