2011-08-26 3 views
0

디렉터리가 원격 서버에 있는지 여부를 확인하는 코드가 있습니다. 경로에서 ListDirectory 명령을 실행하고 응답이 존재하면이를 예상하고 그렇지 않은 경우 예외를 예상합니다.FTP ListDirectory 명령이 상태 코드를 반환합니다. 125

문제는이 코드가 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; 
    } 
} 

디렉토리가 존재하는지 어떻게 안정적으로 확인할 수 있습니까? 내가 찾은 모든 코드 예제는이 기술을 사용합니다. 내가 디렉토리가 존재하는지 검사 할 때마다 WebRequestMethods.Ftp.MakeDirectory 명령을 사용하여이 문제를 해결했다

request.Method = WebRequestMethods.Ftp.PrintWorkingDirectory; 
+0

'ListDirectory' 대신'WebRequestMethods.Ftp.PrintWorkingDirectory'를 사용합니까? – V4Vendetta

+0

@ V4Vendetta naveen의 대답을 참조하십시오. 다른 응답이지만, 내가 원하는 것을하지 않습니다. – Edgar

답변

1

에 request.Method을 변경

1

보십시오. 그것이 존재하지 않으면 생성되고, 존재한다면 예외를 잡아 계속 수행합니다.

+0

그러면 응답 코드는'257 PathnameCreated'이지만 디렉토리는 여전히 서버에 존재하지 않습니다. – Edgar

관련 문제