データベースからデータを読み取り、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 経由でサーバーにアクセスしようとすると、同じことが起こります。
これが私のアプリケーションでも起こっていることだと確信しています。