У меня есть немного кода, который должен проверить, существует ли каталог на удаленном сервере. Он выполняет команду ListDirectory
на пути и ожидает ответ, если он существует, и исключение, если оно не существует.
Проблема в том, что команда возвращает код 125 DataAlreadyOpen
, поэтому мой код интерпретирует это как успех, когда он должен был потерпеть неудачу.
Возможно, я совершенно не понимаю, как работает FTP. Я создаю новый запрос каждый раз, поэтому не понимаю, как соединение уже может быть открыто.
О, и код работает с корневыми каталогами, такими как ftp://myIP/Folder1
, но не работает с ftp://myIP/Folder1/Folder2
. Кстати, я использую FTP-сервер IIS.
public static bool DirectoryExists(string path)
{
try
{
var request = (FtpWebRequest)WebRequest.Create(path);
request.Credentials = new NetworkCredential("foo", "bar");
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.KeepAlive = false;
using (var response = (FtpWebResponse)request.GetResponse())
return true;
}
catch (Exception ex)
{
return false;
}
}
Как я могу надежно проверить, существует ли каталог? Все примеры кода, которые я нашел, используют эту технику.