QA@IT

[VB.NET] FTP GetRequestStreamでタイムアウトエラー

6560 PV

お世話になります。
FTPでサーバにアップロードする際にPASVモードを使用するとGetRequestStreamでタイムアウトしてしまいます。
サーバからのリクエスト状態をみてみると
"227 Entering Passive Mode (999,999,999,999,8,235). "
と返ってきています。
FFFTPではPASVモードで問題なくアップロードできます。
原因はなんでしょうか?

ソースは以下の通りです。
Dim NWCre As New System.Net.NetworkCredential("hoge", "pwd")
'ファイル一覧取得
Dim ftpReq As System.Net.FtpWebRequest = CType(System.Net.WebRequest.Create(sv & upDir), System.Net.FtpWebRequest)
ftpReq.Credentials = NWCre
ftpReq.Method = System.Net.WebRequestMethods.Ftp.ListDirectory
ftpReq.KeepAlive = True
ftpReq.UseBinary = False
ftpReq.Timeout = 30000
ftpReq.UsePassive = True

Dim ftpResList As System.Net.FtpWebResponse = CType(ftpReq.GetResponse(), System.Net.FtpWebResponse)
Dim sr As New System.IO.StreamReader(ftpResList.GetResponseStream())
Dim res As String = sr.ReadToEnd()
sr.Close()
Dim fileList As String() = Nothing
If res <> "" Then
fileList = res.Split(vbCrLf)
End If
ftpResList.Close()

'ファイルアップロード
Dim ftpReq3 As System.Net.FtpWebRequest = CType(System.Net.WebRequest.Create(urlTmp), System.Net.FtpWebRequest)
ftpReq3.Credentials = NWCre
ftpReq3.Method = System.Net.WebRequestMethods.Ftp.UploadFile
ftpReq3.KeepAlive = True
ftpReq3.UseBinary = False
ftpReq3.Timeout = 30000
ftpReq3.UsePassive = True

Dim reqStrm As System.IO.Stream = ftpReq3.GetRequestStream() ' ※ここでエラー
Dim fs As New System.IO.FileStream(upFile, System.IO.FileMode.Open, System.IO.FileAccess.Read)
Dim byteLen As Integer = 0
Dim buffer(1023) As Byte
While True
Dim readSize As Integer = fs.Read(buffer, 0, buffer.Length)
If readSize = 0 Then
Exit While
End If
reqStrm.Write(buffer, 0, readSize)

byteLen += readSize

End While
fs.Close()
reqStrm.Close()

[開発環境]VB.NET 2005 XPSP3

ウォッチ

この質問への回答やコメントをメールでお知らせします。