有没有人成功地使用.Net FTPWebRequest类从NAT后面ftps到远程服务器?我的代码如下:

 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,并且所有端口均打开以用于与指定主机之间的通信。

最佳答案

在不知道防火墙或ftp服务器设置的情况下很难确切地说,但是要猜测-您需要查看如何将服务器设置为使用被动模式。
我最熟悉Filezilla,他们对网络配置here有很好的解释,并提供了有关如何设置服务器/客户端软件的示例...

关于.net - NAT(PASV,SSL)后面的FTPWebRequest,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3344089/

10-13 04:48