我有一个简单的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'来下载它? –