Recabamos por todo el mundo online para de este modo traerte la respuesta a tu dilema, en caso de alguna difcultad puedes dejarnos tu pregunta y responderemos porque estamos para ayudarte.
Solución:
Básicamente atrapé el error que recibo al crear el directorio así.
private bool CreateFTPDirectory(string directory)
try
//create the directory
FtpWebRequest requestDir = (FtpWebRequest)FtpWebRequest.Create(new Uri(directory));
requestDir.Method = WebRequestMethods.Ftp.MakeDirectory;
requestDir.Credentials = new NetworkCredential("username", "password");
requestDir.UsePassive = true;
requestDir.UseBinary = true;
requestDir.KeepAlive = false;
FtpWebResponse response = (FtpWebResponse)requestDir.GetResponse();
Stream ftpStream = response.GetResponseStream();
ftpStream.Close();
response.Close();
return true;
catch (WebException ex)
FtpWebResponse response = (FtpWebResponse)ex.Response;
if (response.StatusCode == FtpStatusCode.ActionNotTakenFileUnavailable)
response.Close();
return true;
else
response.Close();
return false;
Yo también estaba atrapado con un problema similar. yo estaba usando,
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftpserver.com/rootdir/test_if_exist_directory");
request.Method = WebRequestMethods.Ftp.ListDirectory;
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
y esperó una excepción en caso de que el directorio no existiera. Este método no lanzó una excepción.
Después de algunos intentos, cambié el directorio de: “ftp://ftpserver.com/rootdir/test_if_exist_directory” a: “ftp://ftpserver.com/rootdir/test_if_exist_directory/”. Ahora el código está funcionando para mí.
Creo que deberíamos agregar una barra diagonal (/) al URI de la carpeta ftp para que funcione.
Según lo solicitado, la solución completa ahora será:
public bool DoesFtpDirectoryExist(string dirPath)
try
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(dirPath);
request.Method = WebRequestMethods.Ftp.ListDirectory;
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
return true;
catch(WebException ex)
return false;
//Calling the method (note the forwardslash at the end of the path):
string ftpDirectory = "ftp://ftpserver.com/rootdir/test_if_exist_directory/";
bool dirExists = DoesFtpDirectoryExist(ftpDirectory);
Supongo que ya está algo familiarizado con FtpWebRequest, ya que esta es la forma habitual de acceder a FTP en .NET.
Puede intentar enumerar el directorio y buscar un código de estado de error.
try
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftp.microsoft.com/12345");
request.Method = WebRequestMethods.Ftp.ListDirectory;
using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
// Okay.
catch (WebException ex)
if (ex.Response != null)
FtpWebResponse response = (FtpWebResponse)ex.Response;
if (response.StatusCode == FtpStatusCode.ActionNotTakenFileUnavailable)
// Directory not found.
Si te ha resultado útil este artículo, te agradeceríamos que lo compartas con el resto programadores y nos ayudes a dar difusión a este contenido.