2016-06-28 9 views
1

サードパーティとのSFTP接続をテストしていますが、これを行うにはC#とRenciを使用しています。SFTP接続が閉じていません(Renci&C#)

しかし、接続が終了していないようです。これは私の簡単なテストコードです:

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] SEQ = 2319 ACK = 1941ウィン= 0レン= 0

であることを示し私にとって、接続が閉じるべきであることを示しています。しかし、約19回の連続したテストの後、ホストは、元の接続がタイムアウトするまで強制的に接続試行を開始します。 ホストはRSTを無視していますか?どうしたの?

+0

ちょっとしたヒント。 [using Statement documentation](https://msdn.microsoft.com/en-us/library/yh598w02.aspx)を見れば、それはクライアント自体を破棄します。それを自分で行う必要はありません。 –

+0

ええ、私は知っている:)したがって、 "厳密に言えば切断と処分は冗長です。" – Schuits

+0

私の最初の考えはDisconnectがDisposeに重複しているということが少し誤解されるかもしれません –

答えて

0

最後に原因を見つけました。それは私たちのコードとは関係がありませんでした。

内部ファイアウォールの1つに、基本的にDoS攻撃を防止するための侵入防止ルールがあります。

私たちは、独自のSFTPサーバーに対してテストしました。サーバーログには、クライアントが接続を終了しているというログがあります。クライアントはサーバーが接続を終了していると言いました。その間に何かが原因であると想定しました。

関連する問題