我在C#3.5中使用了一个类来处理所有的FTP传输,但是因为我已经升级到了框架4,所以我遇到了一些问题。c#4:检查FTP目录是否存在
我在谷歌搜索但没有找到解决方案。
特别是随着一个方法来检查是否存在一个目录:
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之前检查响应的内容; – 2011-01-31 14:21:01
您是否将项目更新到.NET 4.0?如果是这样,请检查您是否在项目属性中使用.NET 4.0 Framework而不是.NET 4.0 Client Profile。这已经修复了迄今为止所遇到的所有兼容性问题的75%。 – Weegee 2011-01-31 14:23:18