2009-12-15 7 views
6

Jeśli używam System.Net.FtpWebRequest do przesłania pliku na serwer vsftpd, czy muszę użyć GetResponse, aby sprawdzić, czy plik został poprawnie załadowany? Czy mogę uzyskać wyjątek dla każdego błędu? Co powinienem sprawdzić w System.Net.FtpWebResponse?Jak sprawdzić błędy FtpWebRequest

Odpowiedz

6

Tak, chcesz chwycić przedmiot FTPWebResponse od obiektu żądania ... tak:

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri); 
request.Method = WebRequestMethods.Ftp.UploadFile; 

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

byte[] fileraw = File.ReadAllBytes("CompleteLocalPath"); 

try 
{ 
    Stream reqStream = request.GetRequestStream(); 

    reqStream.Write(fileraw, 0, fileraw.Length); 
    reqStream.Close(); 
} 
catch (Exception e) 
{ 
    response = (FtpWebResponse) request.GetResponse(); 
    // Do something with response.StatusCode 
    response.Close(); 
} 

Będziemy chcieli, aby sprawdzić Ftp.WebResponse.StatusCode.

Istnieje sporo członków w StatusCode, które można zwrócić, więc sprawdzenie go może być trudne.

Oto lista kodów/opisy, które mogą być zwrócone:

FtpStatusCode

EDIT: Jeśli coś pójdzie nie tak z przelewem należy wyjątek, kiedy odpalić pisarza strumienia. Jedyne, co możesz zrobić, to owinąć wszystko, a jeśli coś pójdzie nie tak, uzyskasz kod statusu i wydrukujesz go na dowolnym nośniku dziennika, dzięki czemu możesz zobaczyć, jaki jest konkretny problem. Poprawiłem powyższy kod, aby odzwierciedlić to wszystko (używając tylko jednego sposobu przesyłania, możesz użyć własnego).

+0

Co powinienem sprawdzić w FtpWebResponse? Zapewnia różnym wynikom różne serwery FTP? Jakie wyniki może dać vsftpd? – magol

+0

Czy można sprawdzić, czy kod FtpStatusCode jest mniejszy niż 300? – magol

Powiązane problemy