FTP ListDirectory命令返回状态代码125

时间:2011-08-26 09:46:36

标签: c# 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;
    }
}

如何可靠地检查目录是否存在?我发现的所有代码示例都使用了这种技术。

2 个答案:

答案 0 :(得分:1)

尝试更改请求。方法

request.Method = WebRequestMethods.Ftp.PrintWorkingDirectory;

答案 1 :(得分:1)

每当我想检查目录是否存在时,我就使用WebRequestMethods.Ftp.MakeDirectory命令解决了这个问题。如果它不存在,则创建它,如果它存在,我捕获异常并继续。