86263
Goto Top

C Sharp FTP Dateigröße

Moin zusammen,

ich bin gerade dabei eine FTP Klasse zu schreiben. Diese soll unter anderem auch die Dateigröße einer Datei auf dem Server zurückgeben:
public long getFileSize(string serverFile)
        {
            long size = -1;
            FtpWebRequest request = initConnection(serverFile);
            request.Method = WebRequestMethods.Ftp.GetFileSize;
            WebResponse response = checkConnection(request);
            if (response != null)
            {
                size = response.ContentLength;              
            }
            return size;
        }

mit den beiden Hilfsmethoden:
initConnection:
public FtpWebRequest initConnection(string serverFile)
        {
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create(@"ftp://" + server + @"/" + serverFile);  
            request.Credentials = new NetworkCredential(user, password);
            return request;
        }
checkConnection:
public WebResponse checkConnection(FtpWebRequest request)
        {
            WebResponse response = null;
            try {
                response = request.GetResponse();
            } catch (Exception ex) { }
            return response;
        }

Wenn ich mir nun ein Objekt aus dieser Klasse erzeuge, kommt es zu einer Exception:
Der Remoteserver hat einen Fehler zurückgegeben: (550) Datei nicht verfügbar.

Umgehen lässt sich das ganze allerdings, wenn ich in getFileSize einen Workaround einbaue:
long size = -1;

// BUGFIX
FtpWebRequest r = initConnection(serverFile);
r.Method = WebRequestMethods.Ftp.DownloadFile;
WebResponse w = checkConnection(r);
w.Close();
// + + + + + 

FtpWebRequest request = initConnection(serverFile);
... (s.o.)
Jetzt baut sich die Verbindung ohne Probleme auf. Das ist ja an und für sich gut. ich wüsste nur gerne warum das funktioniert.


Gruß,
DB

Content-Key: 204097

Url: https://administrator.de/contentid/204097

Printed on: April 19, 2024 at 20:04 o'clock