2009-12-15 9 views
6

Si j'utilise System.Net.FtpWebRequest pour télécharger un fichier sur un serveur vsftpd, dois-je utiliser GetResponse pour vérifier si le fichier a été téléchargé correctement? Ou est-ce que j'obtiens une exception pour chaque erreur? Que dois-je vérifier dans System.Net.FtpWebResponse?Comment vérifier FtpWebRequest pour les erreurs

Répondre

6

Ouais, vous voulez saisir l'objet FtpWebResponse de l'objet de la demande ... comme ceci:

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(); 
} 

Vous voulez vérifier Ftp.WebResponse.StatusCode.

Il y a un bon nombre de membres dans StatusCode qui peuvent être retournés, donc vérifier par rapport à cela peut être difficile.

Voici une liste des codes/descriptions qui pourraient être retournés:

FtpStatusCode

EDIT: Si quelque chose va mal avec un transfert, il doit lancer une exception lorsque vous lancez un écrivain de flux. Ce que vous pouvez faire est d'emballer un try-catch autour de tout cela, et si quelque chose ne va pas, vous serez en mesure d'obtenir le code d'état et l'imprimer sur n'importe quel support que vous utilisez pour voir quel est le problème spécifique. J'ai modifié le code ci-dessus pour refléter tout cela (en utilisant un seul moyen de transfert, vous pouvez utiliser le vôtre).

+0

Que dois-je vérifier dans FtpWebResponse? Fournit différents serveurs FTP différents résultats? Quels résultats peuvent alors donner vsftpd? – magol

+0

Est-il correct de vérifier si FtpStatusCode est inférieur à 300? – magol