/// <summary> /// Elimina archivos del ftp /// tipoRuta: /// 0 = Sobres / /// 1 = Comprobantes / /// 2 = Bandeja Entrada / /// 3 = Respuestas / /// 4 = Reporte Diario / /// 5 = ContingenciaSobres / /// 6 = ContingenciaComprobantes / /// 7 = ContingenciaReportesDiarios / /// 8 = CFEs / /// 9 = CertificadosAnulados / /// 10 = Contingencia Sobres Dgi /// </summary> /// <param name="tipoRuta"></param> public void EliminarFTP(int tipoRuta, string nombreArchivo) { string servidorFTP = "", usuarioFTP = "", claveFTP = "", rutaFTP = ""; ManteUdoFTP udoFTP = new ManteUdoFTP(); try { ConfigFTP config = udoFTP.Consultar(); if (config != null) { servidorFTP = config.Servidor; usuarioFTP = config.Usuario; claveFTP = config.Clave; //Se valida el tipo de extension(Se manejan rutas distintas para xml y pdf) rutaFTP = ObtenerTipoRuta(tipoRuta, config); rutaFTP = Mensaje.dirFtp + servidorFTP + rutaFTP; // Get the object used to communicate with the server. FtpWebRequest request = (FtpWebRequest)WebRequest.Create(rutaFTP + nombreArchivo); request.Method = WebRequestMethods.Ftp.DeleteFile; // This example assumes the FTP site uses anonymous logon. request.Credentials = new NetworkCredential(usuarioFTP, claveFTP); FtpWebResponse response = (FtpWebResponse)request.GetResponse(); } } catch (Exception) { } }
/// <summary> /// Realiza la consulta de la configuracion para la conexion FTP almacenada /// </summary> /// <param name="comp"></param> /// <returns></returns> public ConfigFTP Consultar() { ConfigFTP configFtp = null; //Obtener objeto estandar de record set Recordset recSet = ProcConexion.Comp.GetBusinessObject(BoObjectTypes.BoRecordset); try { //Establecer consulta string consulta = "SELECT U_Serv, U_RepComp, U_RepSob, U_RepBan, U_ConSobDgi, U_RepConSob, U_RepConCom, U_RepConReDi, U_Usuario, U_Clave, U_RepResp, U_RepRepDi, U_RutWsE, U_RutWsC, U_RepCfe, U_RepCerAnu, U_FilePcDel FROM [@TFECONFTP]"; //Ejecutar consulta recSet.DoQuery(consulta); //Validar que se hayan obtenido registros if (recSet.RecordCount > 0) { //Crea una instancia del objeto configuracion ftp configFtp = new ConfigFTP(); //Establece las propiedaes al objeto configuracion ftp configFtp.Servidor = recSet.Fields.Item("U_Serv").Value + ""; configFtp.RepoComp = recSet.Fields.Item("U_RepComp").Value + ""; configFtp.RepoSob = recSet.Fields.Item("U_RepSob").Value + ""; configFtp.RepoBandejaEntrada = recSet.Fields.Item("U_RepBan").Value + ""; configFtp.RepoContingenciaSobres = recSet.Fields.Item("U_RepConSob").Value + ""; configFtp.RepoContingenciaComprobantes = recSet.Fields.Item("U_RepConCom").Value + ""; configFtp.RepoContingenciaReportesDiarios = recSet.Fields.Item("U_RepConReDi").Value + ""; configFtp.Usuario = recSet.Fields.Item("U_Usuario").Value + ""; configFtp.Clave = recSet.Fields.Item("U_Clave").Value + ""; configFtp.RepoResp = recSet.Fields.Item("U_RepResp").Value + ""; configFtp.RepoRepDi = recSet.Fields.Item("U_RepRepDi").Value + ""; configFtp.RepoWebServiceEnvio = recSet.Fields.Item("U_RutWsE").Value + ""; configFtp.RepoWebServiceConsulta = recSet.Fields.Item("U_RutWsC").Value + ""; configFtp.RepoCFEs = recSet.Fields.Item("U_RepCfe").Value + ""; configFtp.RepoCertificadosAnulados = recSet.Fields.Item("U_RepCerAnu").Value + ""; configFtp.RepoContingenciaSobreDgi = recSet.Fields.Item("U_ConSobDgi").Value + ""; configFtp.FileDelete = recSet.Fields.Item("U_FilePcDel").Value + ""; } } catch (Exception) { //Se activa bandera de error errorManteFTP = true; } finally { if (recSet != null) { //Liberar memoria System.Runtime.InteropServices.Marshal.ReleaseComObject(recSet); System.GC.Collect(); } } return(configFtp); }
/// <summary> /// Almacena o actualiza la configuracion de la conexion con el ftp /// <para>0=Valores ingresados.</para> /// <para>1=Valores no ingresados.</para> /// <para>2=Valores no validos</para> /// <para>3=Rango no ingresado</para> /// </summary> public int Almacenar() { //Valida que los campos tenga valores y el formato correcto if (Validar()) { //Crea un nuevo objeto de configuracion de ftp ConfigFTP configFtp = new ConfigFTP(); configFtp.Servidor = udsTxtServidor.Value; configFtp.RepoComp = udsTxtComp.Value; configFtp.RepoSob = udsTxtSob.Value; configFtp.Usuario = udsTxtUsuario.Value; configFtp.RepoBandejaEntrada = udsTxtBan.Value; configFtp.Clave = udsTxtClave.Value; configFtp.RepoResp = udsTxtResp.Value; configFtp.RepoRepDi = udsTxtRepDi.Value; configFtp.RepoWebServiceEnvio = udsTxtRepWsE.Value; configFtp.RepoWebServiceConsulta = udsTxtRepWsC.Value; configFtp.RepoContingenciaSobres = udsTxtRepConSob.Value; configFtp.RepoContingenciaComprobantes = udsTxtRepConCom.Value; configFtp.RepoContingenciaReportesDiarios = udsTxtRepConReDi.Value; configFtp.RepoCFEs = udsTxtRepCfe.Value; configFtp.RepoCertificadosAnulados = udsTxtRepCerAnu.Value; configFtp.RepoContingenciaSobreDgi = udsTxtRepConSobDgi.Value; //udsTxtRutDgi.Value = configFtp.RutDgi; configFtp.FileDelete = udschkFileDelete.Value; //Crea una nueva instanacia al mantenimiento de configuracion de FTP ManteUdoFTP manteUdoFtp = new ManteUdoFTP(); //Valida que la configuracion ya exista. Si existe acutializa los datos, si no existe los almacena if (manteUdoFtp.ExisteConfiguracion()) { //Actualizar los datos if (manteUdoFtp.Actualizar(configFtp)) { return(0);//Valores ingresados } } else { //Almacenar los datos if (manteUdoFtp.Almacenar(configFtp)) { return(0);//Valores ingresados } } } else { return(2); //Valores no validos } return(1); //Valores no ingresados }
/// <summary> /// Obtiene las direcciones web de los web services de la DGI /// </summary> public void ObtenerUrlWebService() { ManteUdoFTP manteUdoFtp = new ManteUdoFTP(); ConfigFTP configFtp = manteUdoFtp.ConsultarURLWebService(); if (configFtp != null) { URL_ENVIO = configFtp.RepoWebServiceEnvio; URL_CONSULTAS = configFtp.RepoWebServiceConsulta; } }
//#region COMENTADO ///// <summary> ///// Metodo para contenido de un directorio FTP ///// 0 = Sobres / ///// 1 = Comprobantes / ///// 2 = Bandeja Entrada / ///// 3 = Respuestas / ///// 4 = Reporte Diario / ///// 5 = ContingenciaSobres / ///// 6 = ContingenciaComprobantes / ///// 7 = ContingenciaReportesDiarios / ///// 8 = CFEs / ///// 9 = CertificadosAnulados ///// </summary> ///// <param name="tipoRuta"></param> //public void obtenerDirectorioDescargar(int tipoRuta) //{ // string servidorFTP = "", usuarioFTP = "", claveFTP = "", rutaFTP = ""; // List<string> comprobantesPdf = new List<string>(); // List<string> comprobantesPdfXml = new List<string>(); // List<string> comprobantesXml = new List<string>(); // List<string> reportes = new List<string>(); // List<string> sobres = new List<string>(); // ManteUdoFTP udoFTP = new ManteUdoFTP(); // try // { // ConfigFTP config = udoFTP.Consultar(Conexion.ProcConexion.Comp); // if (config != null) // { // //Obtiene datos de la configuracion registrada en la base de datos // servidorFTP = config.Servidor; // usuarioFTP = config.Usuario; // claveFTP = config.Clave; // //Se valida el tipo de extension(Se manejan rutas distintas para xml y pdf) // rutaFTP = ObtenerTipoRuta(tipoRuta, config); // //Se crea la ruta correspondiente al servidor Ftp // rutaFTP = Mensaje.dirFtp + servidorFTP + rutaFTP; // //Obtiene el objeto para comunicarse con el servidor Ftp // FtpWebRequest request = (FtpWebRequest)WebRequest.Create(rutaFTP); // //Se ajusta el metodo para obtener los directorios // request.Method = WebRequestMethods.Ftp.ListDirectory; // // This example assumes the FTP site uses anonymous logon. // request.Credentials = new NetworkCredential(usuarioFTP, claveFTP); // //Se obtiene la respuesta del servidor Ftp // FtpWebResponse response = (FtpWebResponse)request.GetResponse(); // Stream responseStream = response.GetResponseStream(); // StreamReader reader = new StreamReader(responseStream); // //Mientras no sea el fin del stream // while(!reader.EndOfStream) // { // string temp = reader.ReadLine(); // //Valida el formato del nombre del archivo y el tipo de ruta // if (Regex.IsMatch(temp, Mensaje.expRegCfePdf) && tipoRuta == 6) // { // //Archivos generados al crear el comprobante // comprobantesPdf.Add(temp); // } // //Valida el formato del nombre del archivo y el tipo de ruta // if (Regex.IsMatch(temp, Mensaje.expRegCfePdfXml) && tipoRuta == 6) // { // //Es copia de informacion de comprobantePdf // comprobantesPdfXml.Add(temp); // } // //Valida el formato del nombre del archivo y el tipo de ruta // else if (Regex.IsMatch(temp, Mensaje.expRegCfeXml) && tipoRuta == 6) // { // //Datos de los Cfes exclusivamente // comprobantesXml.Add(temp); // } // //Valida el formato del nombre del archivo y el tipo de ruta // else if(Regex.IsMatch(temp, Mensaje.expRegSobre) && tipoRuta == 5) // { // //Sobres con Cfes incluidos // sobres.Add(temp); // } // //Valida el formato del nombre del archivo y el tipo de ruta // else if (Regex.IsMatch(temp, Mensaje.expRegReportesDiarios) && tipoRuta == 7) // { // //Reporte Diarios generados // reportes.Add(temp); // } // } // //Se cierra el streamReader // reader.Close(); // //Se cierra la respuesta // response.Close(); // foreach (string comprobantePdf in comprobantesPdf) // { // //Descarga el archivo de la zona Contingencia en el servidor Ftp // descargarArchivos(comprobantePdf, RutasCarpetas.RutaCarpetaComprobantes, 6); // //Elimina el archivo de la zona Contingencia en el servidor Ftp // EliminarFTP(6, comprobantePdf); // //Carga el archivo en la zona de Comprobantes en el servidor Ftp // CargarArchivos(comprobantePdf, RutasCarpetas.RutaCarpetaComprobantes + comprobantePdf, 1); // } // foreach (string comprobantePdfXml in comprobantesPdfXml) // { // //Descarga el archivo de la zona Contingencia en el servidor Ftp // descargarArchivos(comprobantePdfXml, RutasCarpetas.RutaCarpetaComprobantes, 6); // //Elimina el archivo de la zona Contingencia en el servidor Ftp // EliminarFTP(6, comprobantePdfXml); // //Carga el archivo en la zona de Comprobantes en el servidor Ftp // CargarArchivos(comprobantePdfXml, RutasCarpetas.RutaCarpetaComprobantes + comprobantePdfXml, 1); // } // foreach (string comprobanteXml in comprobantesXml) // { // //Descarga el archivo de la zona Contingencia en el servidor Ftp // descargarArchivos(comprobanteXml, RutasCarpetas.RutaCarpetaCertificadosTemporales, 6); // //Elimina el archivo de la zona Contingencia en el servidor Ftp // EliminarFTP(6, comprobanteXml); // //Carga el archivo en la zona de Comprobantes en el servidor Ftp // cargarComprobanteCFEBD(comprobanteXml, RutasCarpetas.RutaCarpetaCertificadosTemporales); // } // foreach (string sobre in sobres) // { // //Descarga el archivo de la zona Contingencia en el servidor Ftp // descargarArchivos(sobre, RutasCarpetas.RutaCarpetaSobres, 5); // //Elimina el archivo de la zona Contingencia en el servidor Ftp // EliminarFTP(5, sobre); // //Carga el archivo en la zona de Comprobantes en el servidor Ftp // CargarArchivos(sobre, RutasCarpetas.RutaCarpetaSobres + sobre, 0); // } // foreach (string reporte in reportes) // { // //Descarga el archivo de la zona Contingencia en el servidor Ftp // descargarArchivos(reporte, RutasCarpetas.RutaCarpetaReporteDiario, 7); // //Elimina el archivo de la zona Contingencia en el servidor Ftp // EliminarFTP(7, reporte); // //Carga el archivo en la zona de Comprobantes en el servidor Ftp // CargarArchivos(reporte, RutasCarpetas.RutaCarpetaReporteDiario + reporte, 4); // } // } // } // catch(Exception) // { // } //} //#endregion COMENTADO /// <summary> /// Devuelve el tipo de ruta /// </summary> /// <param name="tipoRuta"></param> /// <returns></returns> private string ObtenerTipoRuta(int tipoRuta, ConfigFTP config) { string resultado = ""; if (tipoRuta == 0) { resultado = config.RepoSob; } else if (tipoRuta == 1) { resultado = config.RepoComp; } else if (tipoRuta == 2) { resultado = config.RepoBandejaEntrada; } else if (tipoRuta == 3) { resultado = config.RepoResp; } else if (tipoRuta == 4) { resultado = config.RepoRepDi; } else if (tipoRuta == 5) { resultado = config.RepoContingenciaSobres; } else if (tipoRuta == 6) { resultado = config.RepoContingenciaComprobantes; } else if (tipoRuta == 7) { resultado = config.RepoContingenciaReportesDiarios; } else if (tipoRuta == 8) { resultado = config.RepoCFEs; } else if (tipoRuta == 9) { resultado = config.RepoCertificadosAnulados; } else if (tipoRuta == 10) { resultado = config.RepoContingenciaSobreDgi; } return(resultado); }
/// <summary> /// Consulta las direcciones de los web services de la DGI /// </summary> /// <param name="comp"></param> /// <returns></returns> public ConfigFTP ConsultarURLWebService() { ConfigFTP configFtp = null; //Obtener objeto estandar de record set Recordset recSet = ProcConexion.Comp.GetBusinessObject(BoObjectTypes.BoRecordset); try { //Establecer consulta string consulta = "SELECT U_RutWsE, U_RutWsC FROM [@TFECONFTP]"; //Ejecutar consulta recSet.DoQuery(consulta); //Validar que se hayan obtenido registros if (recSet.RecordCount > 0) { //Crea una instancia del objeto configuracion ftp configFtp = new ConfigFTP(); //Establece las propiedaes al objeto configuracion ftp configFtp.RepoWebServiceEnvio = recSet.Fields.Item("U_RutWsE").Value + ""; configFtp.RepoWebServiceConsulta = recSet.Fields.Item("U_RutWsC").Value + ""; } } catch (Exception) { //Se activa bandera de error errorManteFTP = true; configFtp = null; } finally { if (recSet != null) { //Liberar memoria System.Runtime.InteropServices.Marshal.ReleaseComObject(recSet); System.GC.Collect(); } } return(configFtp); }
/// <summary> /// Consulta los datos de la configuracion /// </summary> private void Consultar() { //Crea una nueva instanacia al mantenimiento de configuracion de FTP ManteUdoFTP manteUdoFtp = new ManteUdoFTP(); //Obtiene un nuevo objeto configuracion FTP ConfigFTP configFtp = manteUdoFtp.Consultar(); //Validar que se haya obtenido un registro if (configFtp != null) { //Cargar los data sourcers udsTxtServidor.Value = configFtp.Servidor; udsTxtComp.Value = configFtp.RepoComp; udsTxtSob.Value = configFtp.RepoSob; udsTxtBan.Value = configFtp.RepoBandejaEntrada; udsTxtUsuario.Value = configFtp.Usuario; udsTxtClave.Value = configFtp.Clave; udsTxtResp.Value = configFtp.RepoResp; udsTxtRepDi.Value = configFtp.RepoRepDi; udsTxtRepWsE.Value = configFtp.RepoWebServiceEnvio; udsTxtRepWsC.Value = configFtp.RepoWebServiceConsulta; udsTxtRepConSob.Value = configFtp.RepoContingenciaSobres; udsTxtRepConCom.Value = configFtp.RepoContingenciaComprobantes; udsTxtRepConReDi.Value = configFtp.RepoContingenciaReportesDiarios; udsTxtRepCfe.Value = configFtp.RepoCFEs; udsTxtRepCerAnu.Value = configFtp.RepoCertificadosAnulados; udsTxtRepConSobDgi.Value = configFtp.RepoContingenciaSobreDgi; udsTxtRutDgi.Value = configFtp.RutDgi; udschkFileDelete.Value = configFtp.FileDelete; } else { if (ManteUdoFTP.errorManteFTP) { SAPbouiCOM.Framework.Application.SBO_Application.MessageBox(Mensaje.errTablaConfigFtp); ManteUdoFTP.errorManteFTP = false; } } }
/// <summary> /// Actualiza los datos de la configuracion de conexion al servidor FTP /// </summary> /// <param name="comp"></param> /// <param name="configFtp"></param> /// <returns></returns> public bool Actualizar(ConfigFTP configFtp) { bool resultado = false; GeneralService servicioGeneral = null; GeneralData dataGeneral = null; GeneralDataParams parametros = null; try { //Obtener servicio general de la compañia servicioGeneral = ProcConexion.Comp.GetCompanyService().GetGeneralService("TTFECONFTP"); //Obtener lista de parametros parametros = servicioGeneral.GetDataInterface(GeneralServiceDataInterfaces.gsGeneralDataParams); //Establecer parametros parametros.SetProperty("DocEntry", "1"); //Apuntar al udo que corresponde con los parametros dataGeneral = servicioGeneral.GetByParams(parametros); dataGeneral.SetProperty("U_Serv", configFtp.Servidor); dataGeneral.SetProperty("U_RepComp", configFtp.RepoComp); dataGeneral.SetProperty("U_RepSob", configFtp.RepoSob); dataGeneral.SetProperty("U_RepBan", configFtp.RepoBandejaEntrada); dataGeneral.SetProperty("U_RepResp", configFtp.RepoResp); dataGeneral.SetProperty("U_RepRepDi", configFtp.RepoRepDi); dataGeneral.SetProperty("U_RepConSob", configFtp.RepoContingenciaSobres); dataGeneral.SetProperty("U_RepConCom", configFtp.RepoContingenciaComprobantes); dataGeneral.SetProperty("U_RepConReDi", configFtp.RepoContingenciaReportesDiarios); dataGeneral.SetProperty("U_Usuario", configFtp.Usuario); dataGeneral.SetProperty("U_Clave", configFtp.Clave); dataGeneral.SetProperty("U_RutWsE", configFtp.RepoWebServiceEnvio); dataGeneral.SetProperty("U_RutWsC", configFtp.RepoWebServiceConsulta); dataGeneral.SetProperty("U_RepCfe", configFtp.RepoCFEs); dataGeneral.SetProperty("U_RepCerAnu", configFtp.RepoCertificadosAnulados); dataGeneral.SetProperty("U_ConSobDgi", configFtp.RepoContingenciaSobreDgi); dataGeneral.SetProperty("U_ConSobDgi", configFtp.RepoContingenciaSobreDgi); dataGeneral.SetProperty("U_FilePcDel", configFtp.FileDelete); ///dataGeneral.SetProperty("U_RUT", configFtp.RutDgi); //Agregar el nuevo registro a la base de datos mediante el serivicio general servicioGeneral.Update(dataGeneral); resultado = true; } catch (Exception) { } finally { if (parametros != null) { //Liberar memoria utlizada por parametros System.Runtime.InteropServices.Marshal.ReleaseComObject(parametros); System.GC.Collect(); } if (dataGeneral != null) { //Liberar memoria utlizada por dataGeneral System.Runtime.InteropServices.Marshal.ReleaseComObject(dataGeneral); System.GC.Collect(); } if (servicioGeneral != null) { //Liberar memoria utlizada por objeto servicioGeneral System.Runtime.InteropServices.Marshal.ReleaseComObject(servicioGeneral); System.GC.Collect(); } } return(resultado); }
/// <summary> /// Metodo para cargar archivos en un servidor FTP /// tipoRuta: /// 0 = Sobres / /// 1 = Comprobantes / /// 2 = Bandeja Entrada / /// 3 = Respuestas / /// 4 = Reporte Diario / /// 5 = ContingenciaSobres / /// 6 = ContingenciaComprobantes / /// 7 = ContingenciaReportesDiarios / /// 8 = CFEs / /// 9 = CertificadosAnulados/ /// 10 = ContingenciaSobresDgi /// </summary> /// <param name="extension"></param> /// <returns></returns> public bool CargarArchivos(string nombreArchivo, string rutaArchivo, int tipoRuta) { string servidorFTP = "", usuarioFTP = "", claveFTP = "", rutaFTP = ""; bool resultado = false; ManteUdoFTP udoFTP = new ManteUdoFTP(); ConfigFTP config = udoFTP.Consultar(); if (config != null) { servidorFTP = config.Servidor; usuarioFTP = config.Usuario; claveFTP = config.Clave; rutaFTP = ObtenerTipoRuta(tipoRuta, config); Boolean BorroFile; //Valida que la ruta no este vacia if (!rutaFTP.Equals("")) { try { rutaFTP = Mensaje.dirFtp + servidorFTP + rutaFTP + nombreArchivo; //Se conecta al servidor ftp FtpWebRequest request = (FtpWebRequest)WebRequest.Create(rutaFTP); //Se define el metodo a ejecutar = cargaArchivos request.Method = WebRequestMethods.Ftp.UploadFile; //Se inicia sesion en el servidor request.Credentials = new NetworkCredential(usuarioFTP, claveFTP); rutaLocal = rutaArchivo; //Se obtiene el contenido del archivo byte[] contenido = File.ReadAllBytes(rutaLocal); request.ContentLength = contenido.Length; //Se escribe el contenido en un stream y es enviado al servidor ftp Stream requestStream = request.GetRequestStream(); requestStream.Write(contenido, 0, contenido.Length); requestStream.Close(); //Se obtiene el formulario activo para mantener la conexion con DIServer Form activo = SAPbouiCOM.Framework.Application.SBO_Application.Forms.ActiveForm; //Se libera el objeto de memoria System.Runtime.InteropServices.Marshal.ReleaseComObject(activo); GC.Collect(); FtpWebResponse response = (FtpWebResponse)request.GetResponse(); Console.WriteLine(response.StatusDescription); response.Close(); BorroFile = BorroFiles(); if (BorroFile != true) { //Se borra el archivo subido File.Delete(rutaLocal); } resultado = true; } catch (Exception) { } } } return(resultado); }
/// <summary> /// Metodo para descargar archivos del servidor ftp /// tipoRuta: /// 0 = Sobres / /// 1 = Comprobantes / /// 2 = Bandeja Entrada / /// 3 = Respuestas / /// 4 = Reporte Diario / /// 5 = ContingenciaSobres / /// 6 = ContingenciaComprobantes / /// 7 = ContingenciaReportesDiarios / /// 8 = CFEs / /// 9 = CertificadosAnulados / /// 10 = Contingencia Sobres Dgi /// </summary> /// <param name="rutaFTP"></param> /// <param name="nombreArchivo"></param> /// <param name="pRutaLocal"></param> /// <returns></returns> public bool descargarArchivos(string nombreArchivo, string pRutaLocal, int tipoRuta) { string servidorFTP = "", usuarioFTP = "", claveFTP = "", rutaFTP = ""; bool resultado = false; ManteUdoFTP udoFTP = new ManteUdoFTP(); ConfigFTP config = udoFTP.Consultar(); if (config != null) { servidorFTP = config.Servidor; usuarioFTP = config.Usuario; claveFTP = config.Clave; //Se valida el tipo de extension(Se manejan rutas distintas para xml y pdf) rutaFTP = ObtenerTipoRuta(tipoRuta, config); //Valida que la ruta no este vacia if (!rutaFTP.Equals("")) { try { rutaFTP = Mensaje.dirFtp + servidorFTP + rutaFTP + nombreArchivo; FtpWebRequest request = (FtpWebRequest)WebRequest.Create(rutaFTP); //Se define el metodo a ejecutar = cargaArchivos request.Method = WebRequestMethods.Ftp.DownloadFile; ////Se inicia sesion en el servidor request.Credentials = new NetworkCredential(usuarioFTP, claveFTP); request.UseBinary = true; ////request.UsePassive = false; FtpWebResponse response = (FtpWebResponse)request.GetResponse(); ////Se descarga el archivo Stream responseStream = response.GetResponseStream(); FileStream fileStream = new FileStream(pRutaLocal + nombreArchivo, FileMode.Create); byte[] buffer = new byte[2048]; int count = responseStream.Read(buffer, 0, buffer.Length); while (count > 0) { fileStream.Write(buffer, 0, count); count = responseStream.Read(buffer, 0, buffer.Length); } fileStream.Close(); response.Close(); resultado = true; } catch (Exception) { //SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("E/DEsc/FTP: " + ex.ToString()); } } } return(resultado); }