C# SFTP连接未关闭(Renci&;C)
我正在测试与第三方的SFTP连接,我们正在使用C#和Renci来实现这一点 但这些联系似乎并没有结束。这是我的简单测试代码:C# SFTP连接未关闭(Renci&;C),c#,connection,sftp,C#,Connection,Sftp,我正在测试与第三方的SFTP连接,我们正在使用C#和Renci来实现这一点 但这些联系似乎并没有结束。这是我的简单测试代码: public bool TestConnection() { using (var client = new SftpClient(_connectionInfo)) { try { client.Connect(); if (!client.IsConnected)
public bool TestConnection()
{
using (var client = new SftpClient(_connectionInfo))
{
try
{
client.Connect();
if (!client.IsConnected)
return false;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return false;
}
finally
{
client.Disconnect();
client.Dispose();
}
return true;
}
}
严格地说,断开和处理是多余的
Wireshark显示从我们到主机的每个测试的最后一个命令是
59916→ 22[RST,ACK]序列=2319 ACK=1941 Win=0 Len=0
对我来说,这表明连接应该关闭。然而,在大约19次连续测试之后,主机开始强制关闭连接尝试,直到原始连接开始超时。
主机是否忽略RST,是否类似于防火墙以某种方式防止断开连接?发生了什么事?我们终于找到了原因。这与我们的代码无关 其中一个内部防火墙具有入侵预防规则,基本上用于防止DoS攻击
我们通过对自己的SFTP服务器进行测试发现了这一点。服务器日志显示客户端正在关闭连接。客户端说服务器正在关闭连接,所以我们认为中间的某个东西是罪魁祸首。最终我们找到了原因。这与我们的代码无关 其中一个内部防火墙具有入侵预防规则,基本上用于防止DoS攻击
我们通过对自己的SFTP服务器进行测试发现了这一点。服务器日志显示客户端正在关闭连接。客户说服务器正在关闭连接,所以我们认为这两者之间有什么东西是罪魁祸首。给你一个提示;如果您查看了客户端,它将处理客户端本身。没有必要自己做。是的,我知道:)因此这句话“严格来说,断开连接和处理是多余的。”这可能有点误解。我的第一个想法是,断开连接是多余的,处理只是给你一个提示;如果您查看了客户端,它将处理客户端本身。没有必要自己做。是的,我知道:)因此这句话“严格来说,断开连接和处理是多余的。”这可能有点误解我的第一个想法是断开连接是多余的处理