我試圖上傳一個大文件(超過50Mb)到我的網絡服務器,但我的應用程序試圖關閉流時掛起。如果上傳的文件大於50Mb,則.Close()會導致它掛起 - 根本沒有錯誤信息 - 但小於50Mb的文件成功。大文件Ftp上傳導致VB.Net應用掛在Stream.Close()
你有什麼建議解決fstream.Close()掛我的應用程序?
Dim target As New Uri(uploadedFilePath)
Dim fRequest As System.Net.FtpWebRequest = System.Net.WebRequest.Create(target)
fRequest.Credentials = New System.Net.NetworkCredential(usr, pswd)
fRequest.KeepAlive = False
fRequest.Proxy = Nothing
fRequest.UsePassive = True
fRequest.UseBinary = True
fRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile
fRequest.Timeout = 180000
Dim count As Integer = 0
Dim readBytes As Integer = 0
Const bufferLength As Integer = 8192
Dim buffer As Byte() = New Byte(bufferLength - 1) {}
Dim fs As FileStream = File.OpenRead(localFileName)
Dim fStream As Stream = fRequest.GetRequestStream
Console.WriteLine("Writing bytes to the stream. {0}", String.Format("{0:HH:mm}", Now))
Do
readBytes = fs.Read(buffer, 0, bufferLength)
fStream.Write(buffer, 0, readBytes)
count += readBytes
Loop While readBytes <> 0
Console.WriteLine("Writing {0} bytes to the stream. {1}", count, String.Format("{0:HH:mm}", Now))
fStream.Close()
Console.WriteLine("fstream Closed {0}", String.Format("{0:HH:mm}", Now))
這給輸出:
Writing bytes to the stream. 13:08
Writing 51391500 bytes to the stream. 13:18
注意最後Console.Writeline是從來沒有輸出。
PS使用Visual Studio 2010和.NET Framework 4.0
您能否使用普通FTP客戶端程序成功地將大於50mb的文件FTP到服務器? – Femi
絕對是。定期必須建立一個150Mb的文件 - 因此希望自動執行此操作 - 鑑於此應用程序的其他功能是生成該150Mb文件。 – Nigel
您是否找到針對此問題的解決方案?我正在試圖找到解決方案,撕裂我的頭髮! – 2011-10-13 10:22:43