Ftp Verzeichnis auf Datei überprüfen und diese dann herunterladen

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Trade.

    Ftp Verzeichnis auf Datei überprüfen und diese dann herunterladen

    Hallo Leute,

    ich bräuchte mal eure Hilfe.

    Und zwar möchte ich, dass mein Programm eine FTP Verbindung aufbaut, prüft ob im Verzeichnis eine Datei ist und falls diese Datei vorhanden ist soll diese heruntergeladen werden.
    Doch schaffe ich das nur, wenn ich die eine Verbindung die ich zum Auslesen lassen welche Dateien da sind trenne und eine neue aufbaue.

    Ich würde alles gerne über eine Verbindung machen.


    'bn' und bnw' sind schon definiert.

    C#-Quellcode

    1. public void ftpversioncheck()
    2. {
    3. FtpWebRequest re = FtpWebRequest.Create("ftp://xxx.de:2121") as FtpWebRequest;
    4. re.Credentials = new NetworkCredential(bn, bnw);
    5. re.UsePassive = true;
    6. re.UseBinary = true;
    7. re.KeepAlive = true;
    8. re.Method = WebRequestMethods.Ftp.ListDirectory;
    9. FtpWebResponse rs = re.GetResponse() as FtpWebResponse;
    10. Stream rsstream = rs.GetResponseStream();
    11. List<string> files = new List<string>();
    12. StreamReader reader = new StreamReader(rsstream);
    13. while (!reader.EndOfStream)
    14. {
    15. files.Add(reader.ReadLine());
    16. }
    17. reader.Close(); //liste aller dateien auf dem FTP
    18. rsstream.Close();
    19. if (files.Contains("versions.txt"))
    20. {
    21. re.Method = WebRequestMethods.Ftp.DownloadFile;
    22. reader.ReadToEnd();
    23. reader.Close();
    24. label.Content = "Updater is Connected to our Servers";
    25. }
    26. }


    Das ist mein Code. Doch stürzt er mir immer ab, wenn ich die Methode bei "re" neu setzen will.
    Bin über jede Antwort dankbar.

    Danke im vorraus.
    DaNeubi
    Updater - Warum sollte man eigene Updater vermeiden?
    Bitte auch nicht über FTP, das ist furchtbar unsicher.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Ich hab mir den Thread schon vorher durchgelesen.
    Kenne auch jemanden, der mir bei der Sicherheit helfen kann.

    Und die Übung in diesem Themenbereich hätte ich trotzdem gerne. Bestimmt würde mir das Selbe bei einem WebRequest passieren, deshalb die Frage.
    Richtig und hast du dir den Link von mir angesehen?

    MSDN schrieb:

    This implementation of Close calls the Dispose method...


    C#-Quellcode

    1. ...
    2. reader.Close();
    3. rsstream.Close();
    4. if (files.Contains("versions.txt"))
    5. {
    6. re.Method = WebRequestMethods.Ftp.DownloadFile;
    7. reader.ReadToEnd(); // <= Das Objekt ist disposed, hier wird eine 'System.ObjectDisposedException' geworfen
    8. ...

    DaNeubi schrieb:

    Kenne auch jemanden, der mir bei der Sicherheit helfen kann.
    Zu aller erst musst Du da aber selber was für tun und HTTP(S) statt FTP verwenden. Mit FTP werden nämlich Deine Credentials plain übertragen und es funktioniert in Firmennetzwerken oder mobil oft nicht richtig. Und gerade eine Updateroutine sollte deshalb lieber auf HTTP(S) zurückgreifen, zumal es genau dafür da ist.
    Und wenn Du dann noch jemanden hast, der Dir hilft, das Ganze zu signieren und ordentlich zu verifizieren, dann passt's.

    Und was genau heißt "stürzt ab". Was kommt für eine Exception?

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: