Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# FTP ListDirectory命令返回状态代码125_C#_Ftp - Fatal编程技术网

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
,但该目录在服务器上仍然不存在。