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!
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
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
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?
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.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code