У меня есть простое веб-приложение VB.NET, которое позволяет пользователям загружать определенные файлы на жесткий диск сервера. Однако некоторые из этих файлов чрезвычайно велики, размером до 1 ГБ. Иногда, когда веб-приложение пытается отправить эти файлы, приложение захватывает и бросает System.OutOfMemoryException
. После некоторых исследований я узнал, что это связано с фрагментацией памяти или недостаточно постоянной памяти для выделения всего файла.Как отправлять файлы, не беспокоясь о фрагментации памяти?
Есть ли вообще способ избежать этой ошибки? На нашем сервере достаточно физической памяти для размещения этих больших файлов, это просто проблема фрагментации памяти (из того, что я читал в Интернете в любом случае).
Для справки, вот код, который в настоящее время на месте:
Public Function SendFile(ByVal fileName As String, ByVal contentType As String, ByVal fileLocation As String) As ActionResult
Dim fileBytes as Byte() = New WebClient().DownloadData(fileLocation)
Return File(fileBytes, contentType, fileName)
End Function
... где fileName
это имя файла, contentType
типа MIME, и fileLocation
является физическим расположением на диске.
Любые предложения?
Загрузите его в куски через, скажем, «HttpWebRequest»? –