ChristianErdtmann 0 Geschrieben 21. Februar 2022 Melden Teilen Geschrieben 21. Februar 2022 (bearbeitet) Hey i have bought a Windows Server 2019 on Strato. Now i want to download fiels from an ftp to this server via. my Application. The Application works fine on my local PC. It connects to the ftp and download all files. But on the Windows Server i alltimes get a timerout error at response = reqFTP.GetResponse(); If i use filezilla on the Windows Server it works. I can manually download the files. I think its something with the server because the code is working local but here is my code: public void GetFileListAndContinue(string RemoteDirectory, string sLocalDirectory) { string sActualRemoteDirectory = RemoteDirectory; string sActualDirectory = sLocalDirectory; string[] downloadFiles; StringBuilder result = new StringBuilder(); WebResponse response = null; StreamReader reader = null; try { FtpWebRequest reqFTP; reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(RemoteDirectory)); reqFTP.UseBinary = true; reqFTP.Credentials = new NetworkCredential(sFtpUserID, sFtpPassword); reqFTP.Method = WebRequestMethods.Ftp.ListDirectory; reqFTP.Proxy = null; reqFTP.KeepAlive = false; reqFTP.UsePassive = false; response = reqFTP.GetResponse(); reader = new StreamReader(response.GetResponseStream()); string line = reader.ReadLine(); while (line != null) { result.Append(line); result.Append("\n"); line = reader.ReadLine(); } // to remove the trailing '\n' result.Remove(result.ToString().LastIndexOf('\n'), 1); string[] files = result.ToString().Split('\n'); string item = "."; files = files.Where(e => e != item).ToArray(); Console.WriteLine(String.Join(",", files)); item = ".."; files = files.Where(e => e != item).ToArray(); Console.WriteLine(String.Join(",", files)); foreach (string file in files) { if (file.Contains(".")) { Download(file, RemoteDirectory, sLocalDirectory); } else { sActualDirectory = sLocalDirectory; sActualRemoteDirectory = RemoteDirectory; sActualDirectory = sActualDirectory + file + "/"; sActualRemoteDirectory = sActualRemoteDirectory + file + "/"; createdir(sActualDirectory); GetFileListAndContinue(sActualRemoteDirectory, sActualDirectory); } } } catch (Exception ex) { if (reader != null) { reader.Close(); } if (response != null) { response.Close(); } } } bearbeitet 21. Februar 2022 von ChristianErdtmann Zitieren Link zu diesem Kommentar
ChristianErdtmann 0 Geschrieben 21. Februar 2022 Autor Melden Teilen Geschrieben 21. Februar 2022 I have now deaktivated my firewall and it works. Any idea what i need to do in the firewall that it works with an active firewall? Zitieren Link zu diesem Kommentar
Beste Lösung mwiederkehr 373 Geschrieben 21. Februar 2022 Beste Lösung Melden Teilen Geschrieben 21. Februar 2022 You could try "reqFTP.UsePassive = true;". Active mode is hard to get through firewalls, especially if TLS is used. 1 Zitieren Link zu diesem Kommentar
ChristianErdtmann 0 Geschrieben 21. Februar 2022 Autor Melden Teilen Geschrieben 21. Februar 2022 Thanks @mwiederkehr that worked. Zitieren Link zu diesem Kommentar
NilsK 2.939 Geschrieben 22. Februar 2022 Melden Teilen Geschrieben 22. Februar 2022 Moin, Und warum verhandelt ihr das nicht auf Deutsch? Gruß, Nils Zitieren Link zu diesem Kommentar
ChristianErdtmann 0 Geschrieben 22. Februar 2022 Autor Melden Teilen Geschrieben 22. Februar 2022 @mwiederkehr Do you have an idea why my programm got now again timeout. I used how you said the reqFTP.UsePassive = true and it connect and load my first folder. But after that it timeout again at the same line. Local with active mode it works an load all folders and files. vor 27 Minuten schrieb NilsK: Moin, Und warum verhandelt ihr das nicht auf Deutsch? Gruß, Nils Ach ist das hier ein Deutsches Forum Das wusste ich nicht. Dachte auf englisch erreich ich schneller wen. @mwiederkehr gerne auch hier antworten habe dazu noch mal ein neues Thema geöffnet Additional Info: I tested it now local with passive mode and that works too dont know why it dont works on the server Zitieren Link zu diesem Kommentar
NilsK 2.939 Geschrieben 22. Februar 2022 Melden Teilen Geschrieben 22. Februar 2022 Moin, Nur damit ich das verstehe - du postest in einem Forum, das du dir nicht einmal genügend angesehen hast, um festzustellen, dass es deutschsprachig ist? Gruß, Nils 2 Zitieren Link zu diesem Kommentar
ChristianErdtmann 0 Geschrieben 22. Februar 2022 Autor Melden Teilen Geschrieben 22. Februar 2022 Schwer misszuverstehen für was man hier postet wenn man beim thema auswählen muss wofür o0 ? Und wie gesagt dachte mit englisch erreich ich mehr. Zitieren Link zu diesem Kommentar
Damian 1.535 Geschrieben 22. Februar 2022 Melden Teilen Geschrieben 22. Februar 2022 Die Domain lautet: MCSEboard.DE 1 Zitieren Link zu diesem Kommentar
mwiederkehr 373 Geschrieben 23. Februar 2022 Melden Teilen Geschrieben 23. Februar 2022 Ich kenne die Ursache für den Fehler leider nicht. Hilft es, wenn Du in der Firewall für Deine Anwendung alles öffnest? Du verwendest den FtpWebRequest. Diesen gibt es ab .Net 6 nicht mehr. (Die WebRequest-"Familie" fällt raus, für HTTP gibt es den HttpClient, für FTP gibt es keine eingebauten Klassen mehr.) Mit Google finde ich viele Leute, die das gleiche Problem haben wie Du. Du könntest deshalb prüfen, ob es mit einem anderen Client geht. Ich verwende FluentFTP. Dieser ist weniger sperrig anzusteuern und kann etwa rekursive Downloads von Haus aus. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.