我有一個簡單的VB.NET網絡應用程序,允許用戶下載服務器硬盤上的特定文件。但是,其中一些文件非常大,最大爲1GB。有時,當Web應用程序試圖發送這些文件時,應用程序會挑起並拋出一個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'來下載它? –