c# - Código de estado del método FTPWebRequest.GetResponse()
.net ftpwebresponse (1)
Esto es un poco complicado.
Estoy subiendo archivos a FTP de forma asíncrona. Después de cargar cada archivo, estoy comprobando el estado de la operación de carga para ese archivo. Esto se puede hacer con la propiedad StatusCode del objeto FtpWebResponse para esa solicitud. El fragmento de código es el siguiente.
FileStream fs = File.Open(fileName, FileMode.Open);
while ((iWork = fs.Read(buf, 0, buf.Length)) > 0)
requestStream.Write(buf, 0, iWork);
requestStream.Close();
FtpWebResponse wrRet = ((FtpWebResponse)state.Request.GetResponse());
Hay alrededor de 37 valores de StatusCode según msdn . No sé cuál de estos valores de código de estado garantizará que el archivo se cargue correctamente. Algunos de los que usé en mi código para verificar el éxito son:
wrRet.StatusCode == FtpStatusCode.CommandOK
wrRet.StatusCode == FtpStatusCode.ClosingData
wrRet.StatusCode == FtpStatusCode.ClosingControl
wrRet.StatusCode == FtpStatusCode.ConnectionClosed
wrRet.StatusCode == FtpStatusCode.FileActionOK
wrRet.StatusCode == FtpStatusCode.FileStatus
Pero no me doy cuenta del resto. Necesito estar seguro de estos códigos porque, en función de la falla o el éxito de la operación de carga, debo realizar otras operaciones dependientes. Una condición incorrecta puede afectar el código restante. Otro pensamiento que cruzó mi mente fue simplemente poner el código anterior en un intento ... captar y no depender de estos códigos de estado. Con esto no dependería de los códigos de estado y suponiendo que cualquier falla siempre se dirija al bloque catch. Por favor déjame saber si esta es la manera correcta.
FtpStatusCode.ConnectionClosed
es 426
que es Connection closed; transfer aborted
Connection closed; transfer aborted
por lo que creo que sería un fracaso en realidad. Cualquier cosa en el rango 2XX
debería ser un éxito. Para los clientes FTP que he creado, el que solo recuerdo haber recibido para una carga exitosa es 226
- FtpStatusCode.ClosingData