2009-05-17 3 views
4

Lorsque je tente mon programme sur ma machine win2k8 il fonctionne très bien, mais sur la victoire 2K3 il me donne cette erreur un message d'erreurLa connexion sous-jacente a été fermée: Une erreur inattendue est survenue sur une réception

est le code ici que » générer l'erreur

WebClient wc = new WebClient(); 
wc.DownloadFile("ftp://ftp.website.com/sample.zip"); 

il y a la partie bizarre. si je désactive complètement le pare-feu sur le serveur. l'erreur disparaît. mais il reste des erreurs si j'ajoute le programme à la liste d'exceptions et j'active le pare-feu.

avoir des recherches sur le web pendant des jours, n'a pas trouvé de solution.

Répondre

6

Vous devriez essayer d'utiliser le mode passif pour FTP. La classe WebClient ne le permet pas, mais FtpWebRequest le fait.

FtpWebRequest request = WebRequest.Create("ftp://ftp.website.com/sample.zip") as FtpWebRequest; 
request.UsePassive = true; 
FtpWebResponse response = request.GetResponse() as FtpWebResponse; 
Stream ftpStream = response.GetResponse(); 
int bufferSize = 8192; 
byte[] buffer = new byte[bufferSize]; 
using (FileStream fileStream = new FileStream("localfile.zip", FileMode.Create, FileAccess.Write)) 
{ 
    int nBytes; 
    while((nBytes = ftpStream.Read(buffer, 0, bufferSize) > 0) 
    { 
     fileStream.Write(buffer, 0, nBytes); 
    } 
} 
+0

Comment puis-je utiliser FtpWebRequest pour télécharger un fichier et l'enregistrer sur mon disque local? Je n'ai trouvé que des exemples montrant comment afficher la réponse du serveur. –

+0

Je ne peux pas poster de code dans les commentaires ... J'ai mis à jour ma réponse –

+0

what's nRead? Je ne vois pas ça dans votre code. merci –

1

S'il vous plaît poster l'exception complète, y compris InnerException:

try 
{ 
    WebClient wc = new WebClient(); 
    wc.DownloadFile("ftp://ftp.website.com/sample.zip"); 
} 
catch (Exception ex) 
{ 
    Console.WriteLine(ex.ToString()); // Or Debug.Trace, or whatever 
    throw; // As if the catch were not present 
} 
+0

InnerException est vide –

+0

Affichez le tout de toute façon, pour la trace de la pile. –

1

J'ai eu un problème similaire (pas ftp) et une autre solution

L'environnement serveur de production avait été si sûr que le serveur n'a pas pu atteindre l'URL.

Le test rapide consiste à utiliser un navigateur sur la boîte et à voir si vous pouvez naviguer vers l'URL.

Espérons que cela aide quelqu'un.

Questions connexes