Der Remoteserver hat einen Fehler zurückgegeben: 227 Entering Passive Mode (500 oops vs_utility_recv_peek: keine Daten)

Ich habe ein problem mit der Anbindung eines Windows-Dienstes an eine FTP-site.

Ich erbte ein Windows-Dienst von einem anderen Entwickler. Der Dienst verbindet sich mit einem 3rd-party-server, Download einer csv-Datei und verarbeitet Sie. Für einige Grund, der service funktioniert nicht mehr (gut ein Jahr her, war, bevor ich das Projekt).

Also ging ich zurück zu den basics, erstellt eine Konsolenanwendung und versucht die Verbindung/Datei-download-Funktion nur in diesem app. Ich habe versucht, viele verschiedene Methoden für die Verbindung zum FTP -, aber alle von Ihnen wieder den gleichen Fehler zu meiner Bewerbung:

Dem remote server hat einen Fehler zurückgegeben: 227 Entering Passive Mode ()

Dies ist eine der vielen Methoden, die ich versucht habe:

FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftpaddress/filename.csv");
        request.Method = WebRequestMethods.Ftp.DownloadFile;

        request.Credentials = new NetworkCredential("username", "password");

        request.UsePassive = true;

        FtpWebResponse response = (FtpWebResponse)request.GetResponse();

        Stream responseStream = response.GetResponseStream();
        StreamReader reader = new StreamReader(responseStream);
        Console.WriteLine(reader.ReadToEnd());

        Console.WriteLine("Download Complete, status {0}", response.StatusDescription);

        reader.Close();
        response.Close(); 

Aber es fällt auf das Teil:

FtpWebResponse response = (FtpWebResponse)request.GetResponse();

Ich lese in mehreren Foren, dass die Einstellung der UsePassive-Eigenschaft auf False behebt diesen Fehler, aber alle, die mir passiert ist war, dass ich einen syntax Fehler aus, anstatt, wie unten:

Dem remote server hat einen Fehler zurückgegeben: (500) Syntax error, command unrecognized.

Die Datei gehostet wird, auf einem 3rd-party-FTP-server ich habe keine Kontrolle über. Ich kann fügen Sie die URL in einen browser ein, und ich bin aufgefordert, einen Benutzernamen und ein Passwort, die dann erlaubt mir durch und ich kann die Datei herunterladen.

Zu beseitigen, unsere firewall als Ursache des Problems, ich lief die app sowohl auf das interne Netzwerk und das WiFi (das ist nicht hinter der firewall), und es macht keinen Unterschied. Ich habe auch die Verbindung über FileZilla in Verzug, Aktive und Passive Modi, und es funktionierte jedes mal. Also kein problem dort.

So dann lief ich Wireshark. Hier ist ein Bild von der Draht-capture mit Filezilla (d.h. erfolgreich), im Passiv-Modus:

Der Remoteserver hat einen Fehler zurückgegeben: 227 Entering Passive Mode (500 oops vs_utility_recv_peek: keine Daten)

Und hier ist die Erfassung, wenn die Verbindung (und erfolgloser) Nutzung der app, mit passive auf true gesetzt:

Der Remoteserver hat einen Fehler zurückgegeben: 227 Entering Passive Mode (500 oops vs_utility_recv_peek: keine Daten)

So, wie Sie sehen können, in der Verbindung fehlgeschlagen oben, ich kann mich einloggen in den server gut. Dann aus welchem Grund auch immer eine extra-Anforderung gesendet wird, nämlich "TYP I", fordert der Antwort von "Switching to binary mode." Die unten, bekomme ich die folgende:

500 oops: vsf_sysutil_recv_peek: keine Daten

Darüber hinaus habe ich auch, es lief wieder nach der Einstellung der Passiven Eigenschaft auf false, und dies ist, was ich habe, Zeit:

Der Remoteserver hat einen Fehler zurückgegeben: 227 Entering Passive Mode (500 oops vs_utility_recv_peek: keine Daten)

Also meine Frage ist eine doppelte;

1, wenn ich es irgendwie vorbei die UsePassive Problem und legen Sie diese Eigenschaft auf false, wird das mein problem lösen?

2, ignoriert die UsePassive Eigenschaft, warum kann ich nicht laden Sie die Datei von der app, kann aber von überall sonst?

Ja, wenn Sie UsePassive=false Sie sollten verschwinden anyay 2xx-codes kein Fehler also ich denke mal es ist ein bug .NET-code (Fehler ist etwas anderes, aber es berichten die zuletzt ausgeführte operation).
Danke für die Antwort. Ich weiß, das 227 ist nicht ein Fehlercode, so nehme ich die .Die NETTO-app gibt es, wie es war der Letzte erfolgreiche Antwort vom server. Meine .net-code ist an der Spitze. Der alles tut, springen auf Sie als falsch? Ich habe versucht, VIELE verschiedene Methoden heute, aber alle von Ihnen das gleiche tun.
Nein, nichts scheint falsch (aber ich würde versuchen, hinzufügen Wunsch.UseBinary = true, sowohl mit als auch ohne UsePassive). Es scheint ein server-Fehler (oder ein client-Fehler wegen firewall, wenn man versucht, TCP-Verbindung?)
Ja, ich habe es versucht mit dem UseBinary Eigenschaft. Wenn UseBinary wahr ist, und Verwenden Sie Passiv wahr ist, bekomme ich die gleiche 227 Nachricht. Wenn UseBinary wahr und UsePassive falsch ist, bekomme ich einen 500 Fehler. Sehr frustrierend! Ich glaube nicht, dass es die server wie kann ich eine Verbindung mit FileZilla und über den browser, und so weit wie die firewall habe ich an beiden hinter der firewall und vollständig heraus (über das Gast-WLAN), keine änderung. Trotzdem danke, ich denke, ich werde weitermachen in der dunklen und unaufhörlich Googeln...

InformationsquelleAutor odinel | 2014-06-13

Schreibe einen Kommentar