FTPWebRequest за NAT (PASV, SSL) - PullRequest
       85

FTPWebRequest за NAT (PASV, SSL)

0 голосов
/ 27 июля 2010

Кто-нибудь успешно использовал класс .Net FTPWebRequest для ftps на удаленный сервер из-за NAT? Мой код выглядит следующим образом:

 Dim URI = "ftp://" & sRemoteDir & "/"
    Dim ftp As FtpWebRequest = Nothing
  Try
   ServicePointManager.ServerCertificateValidationCallback = AddressOf ValidateServerCertificate
   ftp = CType(FtpWebRequest.Create(URI), FtpWebRequest)
   ftp.CachePolicy = New System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.NoCacheNoStore)
   ftp.Credentials = New NetworkCredential(sUID, sPw)
   ftp.EnableSsl = True
   ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails

   Dim response As FtpWebResponse = CType(ftp.GetResponse(), FtpWebResponse)
   Dim responseStream As Stream = response.GetResponseStream
   Dim streamReader As New StreamReader(responseStream)
   Dim sb As New StringBuilder()
   sb.Append(streamReader.ReadToEnd)
   streamReader.Close()
   response.Close()
   Return sb.ToString()
  Catch ex As Exception
   Return (ex.Message)
  End Try

И я получаю следующее исключение:

"Невозможно прочитать данные из транспортное сообщение: соединение попытка не удалась, потому что подключен сторона не ответила должным образом после период времени или установлен соединение не удалось, потому что подключен хост не ответил. "

Я знаю, что код хорош, так как он работает, если машина не находится за NAT. Есть идеи? Машина имеет статический IP-адрес, и все порты открыты для трафика на / с указанного хоста.

1 Ответ

0 голосов
/ 04 ноября 2010

Трудно сказать точно, не зная, как настроен ваш брандмауэр или FTP-сервер, но предположите - вам нужно посмотреть, как сервер настроен на использование пассивного режима.Я наиболее знаком с использованием filezilla, у них есть довольно хорошее объяснение конфигурации сети здесь и пример того, как их сервер / клиентское программное обеспечение должно быть установлено ...

...