2013-07-10 18 views
8

Bir FTP Sunucusu bağlantısını sınamak için bir C# işlevi oluşturmak istiyorum.FtpWebRequest'i kapatın/yok edin

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

Sorunum çok basittir:

Ben iyi bir ev sahibi (iyi bir FTP Sunucu), benim işlev dönüş "Tamam" kullanmak

İşte benim fonksiyonudur. Sonra ben kötü bir ana bilgisayar kullanmak , bu atfer iyi adresse ile, yeniden deneme i yeni bir saat bu istisna var

ERROR 421 : Service not available. Closing control connection. 

, varsa bir istisna döner.

Bu sorunu çözmek için uygulamamı kapatmam ve yeniden açmam gerekiyor. Bana yardımcı olabilecek

KeepAlive = true/false and no changes. 

Herkes lütfen:

Birlikte deneyin?

Çok teşekkürler,

Saygılarımızla,

Nixeus

+1

Yeniden testte yeni bir istek oluşturuyor musunuz? – alex

+0

Evet, çünkü bu işlev bir "TEST" düğmesinin arkasındaki kodda. –

cevap

8

Sen FtpWebResponse sınıfını kullanın ve size dizin listesi aldıktan sonra kapatmak olmalıdır: içinde

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

Fazla Bilgi MSDN
Not:

Birden çok GetResponse çağrısı, aynı yanıt nesnesini döndürür; isteği yeniden değil. FtpWebResponse IDisposable arabirimini uygular gibi

+0

Çok teşekkürler, iyi çalışıyor :) –

9

, ayrıca bu şekilde kullanabilirsiniz:

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

gerek yok mutlaka kapatılması yöntemi çağırmak için.