2010-07-27 72 views
0

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

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,并且所有端口都可以打开指定主机的流量。

+0

答案在这里http:// stackoverflow .COM /问题/ 3337673 /罐明确地-FTPS,通过-FileZilla的,但并非来自码 – IniTech 2010-11-05 15:47:52

回答

0

很难说不知道你的防火墙或ftp服务器的设置,但有一个猜测 - 你需要看看如何设置服务器使用被动模式。 我最喜欢使用filezilla,他们有一个很好的网络配置here和他们的服务器/客户端软件如何设置的例子...