0

誰かが.NetFTPWebRequestクラスを使用して、NATの背後からリモートサーバーにftpを送信したことがありますか?私のコードは次のとおりです。

 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があり、指定されたホストとの間のトラフィックに対してすべてのポートが開いています。

4

1 に答える 1

0

ファイアウォールや ftp サーバーの設定を知らずに正確に言うのは難しいですが、推測では - パッシブ モードを使用するにはサーバーがどのように設定されているかを確認する必要があります。私は filezilla の使用に最も精通しています。ネットワーク構成に関するかなり良い説明がここにあり、サーバー/クライアント ソフトウェアをどのようにセットアップする必要があるかの例があります...

于 2010-11-04T08:19:37.500 に答える