C# FTP ListDirectory命令返回状态代码125
我有一段代码,用来检查远程服务器上是否存在目录。它在路径上执行C# FTP ListDirectory命令返回状态代码125,c#,ftp,C#,Ftp,我有一段代码,用来检查远程服务器上是否存在目录。它在路径上执行ListDirectory命令,如果存在,则需要响应,如果不存在,则需要异常 问题是,该命令返回代码125 DataAlreadyOpen,因此我的代码将其解释为成功,而它本应失败 我可能完全误解了FTP的工作原理。我每次都会创建一个新请求,所以我不明白连接是如何打开的 哦,代码与根目录一起工作,如ftp://myIP/Folder1,但不适用于ftp://myIP/Folder1/Folder2。顺便说一下,我正在使用IIS FTP
ListDirectory
命令,如果存在,则需要响应,如果不存在,则需要异常
问题是,该命令返回代码125 DataAlreadyOpen
,因此我的代码将其解释为成功,而它本应失败
我可能完全误解了FTP的工作原理。我每次都会创建一个新请求,所以我不明白连接是如何打开的
哦,代码与根目录一起工作,如ftp://myIP/Folder1
,但不适用于ftp://myIP/Folder1/Folder2
。顺便说一下,我正在使用IIS FTP服务器
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;
}
}
如何可靠地检查目录是否存在?我找到的所有代码示例都使用这种技术。尝试将request.Method更改为
request.Method = WebRequestMethods.Ftp.PrintWorkingDirectory;
每当我想检查目录是否存在时,我就使用
WebRequestMethods.Ftp.MakeDirectory
命令来解决这个问题。如果它不存在,则创建它;如果它存在,则捕获异常并继续。使用WebRequestMethods.Ftp.PrintWorkingDirectory
而不是ListDirectory
work?@V4Vendetta查看naveen的答案。不同的响应,但不符合我的要求。然后响应代码为257 pathname created
,但该目录在服务器上仍然不存在。