【发布时间】:2016-08-25 04:57:44
【问题描述】:
我有一个简单的 VB.NET Web 应用程序,它允许用户下载服务器硬盘上的特定文件。但是,其中一些文件非常大,最大可达 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等分块下载?
标签: vb.net memory-management downloadfile memory-fragmentation