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.