2013-07-10 7 views
8

FTPサーバーへの接続をテストするためにC#関数を作成したいと考えています。FtpWebRequestを閉じる/破壊する

 FtpWebRequest requestDir = (FtpWebRequest)FtpWebRequest.Create("ftp://" + strHost.Trim()); 
     requestDir.Credentials = new NetworkCredential(strUser, strPass); 
     requestDir.Method = WebRequestMethods.Ftp.ListDirectory; 
     try 
     { 
      WebResponse response = requestDir.GetResponse(); 
      return "ok"; 
     } 
     catch (Exception ex) 
     { 
      return ex.Message; 
     } 

私の問題は非常に簡単です::

は私、私は良いホスト(良いFTPホスト)、私の関数の戻り "OK" を使う

は、ここに私の関数です。場合 場合は、後に、私は悪いホストを使用し、それはそれが良いの住所とテストを再度、atfer、例外

ERROR 421 : Service not available. Closing control connection. 

を返し、私はこの例外新しい時間を持っています。

この問題を解決するには、私のアプリケーションを閉じて再度開く必要があります。

私は試してみてください。

KeepAlive = true/false and no changes. 

誰もが私を助けてくださいだろうか?

どうもありがとう、

敬具、

Nixeus

+1

再テストで新しいリクエストを作成していますか? – alex

+0

はい、この機能はコード内の「テスト」ボタンの後ろにあるためです。 –

答えて

8

あなたはFtpWebResponseクラスを使用し、あなたのディレクトリのリストを取得した後、それを閉じる必要があります:中

try 
{ 
    FtpWebResponse response = (FtpWebResponse)requestDir.GetResponse(); 
    string status = response.StatusDescription; 
    response.Close(); 
    return status; 
} 

詳細情報MSDN
注:

GetResponseを複数回呼び出すと、同じ応答オブジェクトが返されます。 リクエストは再発行されません。

+0

ありがとう、それは良い仕事:) –

9

FtpWebResponseがIDisposableをインターフェイスを実装するとして、あなたはまた、このようにそれを使用することができます。明示的にcloseメソッドを呼び出すための

using (FtpWebResponse ftpWebResponse = (FtpWebResponse)requestDir.GetResponse()) 
{ 
    ... 
} 

必要はありません。

関連する問題