Я пытаюсь загрузить большой файл (более 50 МБ) на свой веб-сервер, но мое приложение зависает при попытке закрыть поток. Если загруженный файл больше 50 МБ, то .Close() заставляет его зависать - никакого сообщения об ошибке вообще, однако файл с размером менее 50 Мб преуспевает.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-файл размером более 50 МБ на сервере с помощью обычной клиентской программы FTP? – Femi
Определенно. Регулярно приходится размещать файл 150 Мб - следовательно, желание автоматизировать это - учитывая, что другая функция этого приложения состоит в том, чтобы сгенерировать этот файл размером 150 МБ. – Nigel
Вы нашли решение этой проблемы. Я разрываю волосы, пытаясь найти решение! –