Hi, ich habe ein Software geschrieben, die per
FTP Dateien auf und von einem
FTP-Server lädt. Ich habe bisher auch damit keine Probleme gehabt. Ich teste auch immer mit meinem lokalen Server mit Windows Server 2008 R2 und dem IIS. Bisher auch keine Probleme. Aktuell musste ich wieder an der Software etwas ändern und bekomme plötzlich einen Fehler bei folgendem Code:
IdFTP.List('*.ZIP')
Die Fehlermeldung lautet:
EIdReplyRFCError mit der Meldung '' aufgetreten
(siehe Anhang)
Am betreffenden Formular mit Code habe ich schon einige Zeit nichts mehr geändert. Am Test-
FTP-Server wurde, außer Windows Updates, auch nichts geändert. Jedenfalls kann ich mich nicht erinnern. Die Windows Firewall ist sowohl auf dem Client, als auch auf dem Server nicht aktiv.
Testweise habe ich einen anderen Server mit "Windows Server 2003" als
FTP-Server eingerichtet und da gibt es keine Probleme.
Ich habe gerade noch mal den Updateverlauf der Windowsupdates auf meinem Server 2008 R2 geprüft. Am 12.02.2011 wurde das Sicherheitsupdate
KB2489256 installiert, das etwas mit dem
FTP-Dienst zu tun hat. Ich habe dieses Update Testweise mal deinstalliert, die Fehlermeldung kommt aber immer noch.
Ich habe dann mal etwas im Code gedebugged. Anscheinend ist es folgendes Problem:
Der
FTP-Server gibt den Code 550 zurück. Das bedeutet: "Requested action not taken. File unavailable (for example, file not found, or no
access)". Das Problem tritt nur auf, wenn in dem Ordner keine .ZIP-Datei vorhanden ist. Dieser Rückgabecode wird allerdings nicht intern in den Indys abgefangen und es kommt dann zu dieser
Exception.
Wenn ich das selbe Programm ausgeführe und zu einen Server 2003 verbinde, dann gibt es den Code 150 zurück. Dort gibt es keine .ZIP im Ordner. Aber es gibt auch keine
Exception da die erlaubten Rückgabecode 125, 150 und 154 sind.
Ich werde jetzt erst mal den 2003er Testserver benutzen, denn beim Kunden läuft dieser auch und es dürfte somit erst mal nicht zu einem Problem kommen.
Allerdings wäre es gut, wenn das in den
Indy-Komponenten berücksichtigt wird, bzw. wenn ich das irgendwie ändern könnte. Hat da jemand eine Idee?