2

データベースからデータを読み取り、FTP サーバーにアップロードする必要があるカンマ区切りの CSV ファイルに再フォーマットしています。

この手順では、コンマ区切り形式のデータを含む文字列の Byte 配列を読み取り、それをサーバーにアップロードします。

Private Sub uploadToServer(ByVal data() As Byte, ByVal filename As String)
    Try
        Dim ftpr As FtpWebRequest = _
            DirectCast(WebRequest.Create(String.Format("ftp://ftp.this.com/{0}", filename)), FtpWebRequest)
        ftpr.Credentials = New NetworkCredential("thisUser", "somePassword0rOther")
        ftpr.Method = WebRequestMethods.Ftp.UploadFile

        Using stream As Stream = ftpr.GetRequestStream()
            stream.Write(data, 0, data.Length)
        End Using
    Catch ex As Exception
        el.WriteEntry(String.Format("Error uploading file: {1}", vbNewLine & ex.Message))
    End Try
End Sub

少なくとも、それが本来の目的であり、昨日実行したことです。ただし、例外でこれが返され続けます。

リモート サーバーがエラーを返しました: 227 パッシブ モードに入る

FileZilla を使用して同じサーバーに接続しようとしているときに同じエラーが発生したため、サーバーに問題があると思われます。

ここでサーバーの問題をトラブルシューティングするつもりはありませんが、必要なのは、このコードに問題がないことを確認することです。次に、serverfault に移動して、そこで発生する可能性のあるサーバーの問題についてクエリを実行できます。

それで...このコードに何か問題がありますか?

EDIT
私が発見したFTPにアクセスする他の方法をテストします:

  • サーバー自体 (Windows Server 2008 R2) に RDP 経由で FTP にアクセスすると機能します。
  • FileZilla が復活Connection timed out. Failed to retrieve directory listing

  • Windows エクスプローラー経由で接続すると、 が返されますAn error occurred opening that folder on the FTP Server. Make sure you have permission to access that folder. Details: The operation timed out。オフィス内の誰かが FTP 経由でサーバーにアクセスしようとすると、同じことが起こります。

これが私のアプリケーションでも起こっていることだと確信しています。

4

2 に答える 2

0

NCFtp のドキュメントによると、これはサーバーにパッシブ モードへの移行を要求する場合の適切な応答です。あるべきではないときに、応答をエラーと解釈している可能性があると思います。

また、ウィキペディアの FTP リターン コード エントリによると、2xx で始まるすべての応答は肯定的な応答です。それらは成功を示します。具体的には、227パッシブ モードへの移行が成功したことを示します。

于 2013-03-20T13:58:15.957 に答える