2

我打算用 IIS7/8 在 ASP.NET MVC 中实现一个网站,我需要上传大文件(几 GB)。我知道我可以更改 web.config 中的配置以上传最多 4GB 的文件。但我有点担心内存使用情况。

如果我在一个请求中上传了一个 3GB 的文件(只使用一个带有一个表单、一个文件输入元素和一个提交元素的网页),它会占用我服务器的 3GB 内存吗?或者 IIS 7/8 会自动通过 Request.InputStream 以块的形式传递内容,以便服务器端的内存使用可以接受?如果是这样,我是否需要配置 IIS 以支持块接收?

4

1 回答 1

3

IMO 对于此类数据量(超过 1 GB),您可以使用 ftp。这就是这项技术的意义所在。如果您将使用 asp.net 控件来处理如此大量的数据,那根本不是最好的方法。您也可以考虑 (NeatUpload)[ http://neatupload.codeplex.com

并回答你的问题

在上传过程中,ASP.NET 将整个文件加载到内存中,然后用户才能将文件保存到磁盘或数据库中。因此,由于 Machine.config 文件中 processModel 标记的 memoryLimit 属性,该进程可能会循环使用。

如果您尝试上传如此大的文件,您可能会遇到许多不同的错误

The page cannot be displayed

Server Application is Unavailable

并抛出 System.OutOfMemoryException 类型的异常。

您可以在这里阅读更多内容http://support.microsoft.com/kb/323246

希望它会有所帮助

于 2013-07-08T13:20:41.750 回答