Я использовал класс для всех моих FTP-передач, которые отлично работают в C # 3.5, но, поскольку я обновился до framework 4, у меня возникли некоторые проблемы.
Я ищу в Google, но не могу найти решения.
Особенно с методом проверки, существует ли каталог:
public bool DirectoryExists(string directory)
{
bool directoryExists = false;
if (directory.Substring(0, 1) != "/")
directory = "/" + directory;
FtpWebRequest request = GetFtpWebRequest(host + directory, WebRequestMethods.Ftp.PrintWorkingDirectory);
try
{
using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
{
directoryExists = true;
}
}
catch (WebException)
{
directoryExists = false;
}
return directoryExists;
}
private FtpWebRequest GetFtpWebRequest(string url, string method)
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url);
request.UseBinary = true;
request.KeepAlive = true;
request.UsePassive = (mode == Modes.Passive);
request.Timeout = Timeout.Infinite;
request.ServicePoint.ConnectionLimit = 6;
request.ReadWriteTimeout = Timeout.Infinite;
if (credential == null)
credential = new NetworkCredential(login, password);
request.Credentials = credential;
request.Method = method;
return request;
}
Метод DirectoryExists всегда возвращает true (даже каталог не существует), но только в платформе 4, до того как GetFtpWebRequest генерирует исключение, если каталог не существует.
У кого-нибудь была такая проблема?
Пожалуйста, не говорите мне использовать другую библиотеку, потому что все мои программы зависят от этой, и я не хочу обновлять все ...