2009-05-17 6 views
4

Wenn ich mein Programm auf meiner win2k8 Maschine versuchen, es läuft gut, aber auf Win 2k3 es gibt mir diese Fehlermeldung, dass die FehlermeldungDie zugrunde liegende Verbindung wurde geschlossen: ein unerwarteter Fehler auf einen Empfang aufgetreten

hier ist der Code, dass‘Erzeugungs der Fehler

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

ist der seltsame Teil. wenn ich die Firewall auf dem Server komplett deaktiviere. Der Fehler verschwindet. aber es sind immer noch Fehler, wenn ich das Programm der Ausnahmeliste hinzufüge und die Firewall einschalte.

haben im Web seit Tagen suchen, konnte keine Lösung finden.

Antwort

6

Sie sollten versuchen, den passiven Modus für FTP zu verwenden. Die WebClient-Klasse erlaubt das nicht, aber FtpWebRequest.

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

Wie verwende ich FtpWebRequest, um eine Datei herunterzuladen und auf meinem lokalen Laufwerk zu speichern? I Beispiele, die ich gefunden habe, zeigen nur, wie die Serverantwort angezeigt wird. –

+0

Ich kann Code in Kommentaren nicht schreiben ... Ich habe meine Antwort aktualisiert –

+0

what's nLesen? Ich sehe das nicht in deinem Code. danke –

1

Bitte senden Sie die vollständige Ausnahme, einschließlich der 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 ist leer –

+0

Post das Ganze sowieso für den Stack-Trace. –

1

ich ein ähnliches Problem hatte (kein ftp) und eine andere Lösung

Die Produktionsserver-Umgebung war so sicher gemacht worden dass der Server die URL nicht erreichen konnte.

Schnelltest ist es, einen Browser auf der Box zu verwenden und zu sehen, ob Sie zur URL navigieren können.

Ich hoffe, das hilft jemandem.

Verwandte Themen