none
C# FtpWebRequest로 패시브모드 운영 RRS feed

  • 질문

  • FtpWebRequest를 사용하여 FTP클라이언트를 만들어서 패시브모드로 운영중입니다.

    그런데 FTP서버 2대를 L4스위치를 물리고 vip를 사용하여 로드밸런싱하게 되었습니다.

    접속시 1.1.1.1로 접속한다면 PASV명령 후 1.1.1.2가 날아오는데 FtpWebRequest는 이 주소를 사용하지 않고 1.1.1.1로 접속하려고 해서인지 "원격 서버에서 227 Entering Passive Mode (1,1,1,2,49,193).

     오류를 반환했습니다."
     
     
    와 같은 오류가 발생합니다.
     
    예외는
    위치: System.Net.FtpWebRequest.SyncRequestCallback(Object obj)
       위치: System.Net.FtpWebRequest.RequestCallback(Object obj)
       위치: System.Net.CommandStream.Dispose(Boolean disposing)
       위치: System.IO.Stream.Close()
       위치: System.IO.Stream.Dispose()
       위치: System.Net.ConnectionPool.Destroy(PooledStream pooledStream)
       위치: System.Net.ConnectionPool.PutConnection(PooledStream pooledStream, Object owningObject, Int32 creationTimeout, Boolean canReuse)
       위치: System.Net.FtpWebRequest.FinishRequestStage(RequestStage stage)
       위치: System.Net.FtpWebRequest.GetResponse()
    A first chance exception of type 'System.Net.WebException' occurred in System.dll
    이런 예외가 발생하구요.
     
    1.1.1.2로 직접 접속하면 문제가 없는데 컨트롤 IP와 데이터 IP가 다를 때 문제가 발생하는것 같습니다.
    아무리 구글링을 해도 제 상황과 같은 사례를 찾기가 어렵네요.
    이 부분에 대해 잘 아시는 분 도움 부탁드리겠습니다.
     

    그리고 반드시 Passive모드를 써야 합니다.

    소켓을 써서 Ftp클래스를 별도로 제작하는 방법 외에는 답이 없을까요?

    2015년 3월 2일 월요일 오전 12:33