Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: n-utz en 12 Septiembre 2017, 00:38 am



Título: Error al subir archivo a FTP. C#
Publicado por: n-utz en 12 Septiembre 2017, 00:38 am
Buenas gente, miren, estoy en un proyecto dónde tuve que desarrollar un método para subir un .TIF a un FTP levantado con un IIS de Windows (un WebSite con FTP).

Ocurre algo muy raro, resulta que localmente el método funciona sin problemas, pero en el servidor no funciona, el error que me tira es: Underlying connection was closed: The server committed a protocol violation.

Estuve buscando en muchos foros, y encontré soluciones pero que en mi código no funcionan, les paso el código:

Código:
public static string SubirAFTP(string localPath, string numeroDeEnvio, string ftpKey, string extension, string user = null, string pass = null,
            string prefijoANumeroDeEnvio = null)
        {
            try
            {
                string nombreDeArchivo;
 
                if (prefijoANumeroDeEnvio == null)
                    nombreDeArchivo = numeroDeEnvio + extension;
                else
                    nombreDeArchivo = prefijoANumeroDeEnvio + numeroDeEnvio + extension;
 
                FileInfo toUpload = new FileInfo(nombreDeArchivo);
 
                FtpWebRequest request = (FtpWebRequest)WebRequest.Create(IcsCommonConfig.DeEsteComponente.AppSettings.GetString(ftpKey)
                    + "/" + numeroDeEnvio + extension);
 
                request.Method = WebRequestMethods.Ftp.UploadFile;
          
 
                if (user != null && pass != null)
                    request.Credentials = new NetworkCredential(user, pass);
 
                request.KeepAlive = true;
 
                Stream ftpStream = request.GetRequestStream();
                FileStream file = File.OpenRead(localPath);

                int length = 1024;
                byte[] buffer = new byte[length];
                int bytesRead = 0;
 
                do
                {
                    bytesRead = file.Read(buffer, 0, length);
                    ftpStream.Write(buffer, 0, bytesRead);
                } while (bytesRead != 0);
 
                file.Close();
                ftpStream.Close();
            }
            catch (Exception ex)
            {
                _log.Info("Fallo subida al FTP del proyecto");
                throw ex;
            }
 
            return IcsCommonConfig.DeEsteComponente.AppSettings.GetString(ftpKey) + "/" + numeroDeEnvio + extension;
        }


El error ocurre en esta línea:

Código:
Stream ftpStream = request.GetRequestStream();

El código lo fui haciendo con otros post porque es mi primera experiencia con FTP desde código C#.

Lo ideal sería realizar la subida sin librerias de terceros, por eso estoy usando estos métodos.

Acepto sugerencias, y si precisan más información me dicen.

Gracias por la ayuda.

EDIT:

Intenté acceder desde el servidor (remotamente) al FTP con el CMD y no logra conectarse, mientras que fuera del servidor en otra máquina pude entrar sin problemas.


EDI 2: SOLUCIÓN

Eran problemas de Bindings, lo solucionó un colega así que no se bien que camino tomo, pero les dejo el indicio de qué era el problema.