Я использовал класс для всех моих FTP-передач, которые отлично работают в C# 3.5, но так как я обновился до фреймворка 4, у меня есть некоторые проблемы.C# 4: проверьте, существует ли каталог FTP
Я ищу в 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 всегда возвращает истину (даже каталог не существует), но только на каркасе 4, перед тем, как было сгенерировано исключение по GetFtpWebRequest если каталог не существует.
У кого-нибудь была эта проблема?
Пожалуйста, не говорите мне, чтобы использовать другую библиотеку вызывать все мои программы зависят от этого, и я не хочу, чтобы обновить все ...
Вы пытались проверить содержимое ответа перед возвратом TRUE; –
Вы обновили свой проект до .NET 4.0? Если да, убедитесь, что вы используете .NET 4.0 Framework, а не .NET 4.0 Client Profile в свойствах проекта. Это зафиксировало около 75% всех проблем совместимости, с которыми я столкнулся. – Weegee
Да, я обновляю проект до «.NET framework 4». Если я использую «.NET framework 3.5», все в порядке. В «.NET framework 4» ответ StatusCode всегда «PathnameCreated», если каталог существует или нет ... –