Laden...

FTP: (550) File unavailable bei WebRequest.Create

Erstellt von Sythus vor 9 Jahren Letzter Beitrag vor 9 Jahren 2.179 Views
S
Sythus Themenstarter:in
166 Beiträge seit 2009
vor 9 Jahren
FTP: (550) File unavailable bei WebRequest.Create

Hallo zusammen,

habe eine .net Framework 2.0 Konsolen Anwendung geschrieben die unter anderm eine Datei auf einen FTP Server hochladen soll.

Das Interessante ist, das die unter meinem Windows 7 gut läuft und die Datei erfolgreich übermittelt, auf einem Windows XP PC aber nicht.

Es wird die Fehlermeldung> Fehlermeldung:

The remote server returned an error: (550) File unavailable (e.g., file not found, no access) ausgeworfen.

Das ganze sieht folgendermaßen aus:


            FileInfo fileInf = new FileInfo(ioDaten.output);
            //Ein Request erstellen an den ftp Server
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverDaten.url + serverDaten.pfad + fileInf.Name);


            //Die Methode angeben um eine Datei hochzuladen
            request.Method = WebRequestMethods.Ftp.UploadFile;

            request.UseBinary = true;
            request.UsePassive = true;
            request.KeepAlive = true;

            //Berechtigungsdetails setzen vom ftp Server durch Username und Passwort
            request.Credentials = new NetworkCredential(serverDaten.login, serverDaten.passwort);


            using (FileStream fs = File.OpenRead(ioDaten.output))
            {
                byte[] buffer = new byte[fs.Length];
                fs.Read(buffer, 0, buffer.Length);
                fs.Close();
                Stream requestStream = request.GetRequestStream();
                requestStream.Write(buffer, 0, buffer.Length);
                requestStream.Close();
                requestStream.Flush();
            }

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

            Console.WriteLine("Erfolgreich" + Environment.NewLine + Environment.NewLine + "Status: {0}", response.StatusDescription);

            response.Close();

Jemand eine Idee? Vielen Dank im vorraus!

2.207 Beiträge seit 2011
vor 9 Jahren

Hallo Sythus,

reine Vermutung: Gibts da Probleme mit "//" und "/" im Pfad? Benutze mal

Path.Combine

um die Pfade zusammen zu setzen (dies gilt generell für Pfade).

Gruss

Coffeebean

76 Beiträge seit 2008
vor 9 Jahren

Vor ein paar Tagen trat der Fehlercode bei mir auf, weil der Pfad/die Datei nicht existierte. Prüfe das einmal nach, ob auf dem Server diese wirklich existiert.

@Coffeebean:

Kann Path.Combine auch / statt \ kombinieren? Wenn bei einem Linux-FTP das Backslash verwendet wird, kommt es da nicht "erst recht" zum Fehler?

16.807 Beiträge seit 2008
vor 9 Jahren

Prinzipiell ja.
Es verwendet dazu Path.DirectorySeparatorChar Field.
Ich bezweifle aber, dass es in diesem Fall funktioniert, da es nur das OS beachtet, auf dem es ausgeführt wird; nicht ein anderes Ziel-OS.

Moderne FTP Server korrigieren einen Slash-Fehler jedoch in beide Richtungen.
Das tut Windows sogar von Haus aus in einigen Fällen.