PRB:使用 HtmlInputFile 服务器控件时无法上载大文件

文章翻译 文章翻译
文章编号: 295626 - 查看本文应用于的产品
本文的发布号曾为 CHS295626
展开全部 | 关闭全部

症状

在尝试使用 HtmlInputFile 控件上载一个大文件时,该文件可能无法上载。

原因

出现此问题是因为 Machine.config 文件 <httpRuntime> 节的 maxRequestLength 参数的默认值为 4096 (4 MB)。所以,默认情况下不会上载大于这个值的文件。

解决方案

要解决此问题,请使用下列方法之一:
  • 在 Machine.config 文件中,将 <httpRuntime> 配置节的 maxRequestLength 属性更改为一个更大的值。这一更改会影响整台计算机。
  • 在 Web.config 文件中,替代应用程序的 maxRequestLength 的值。例如,Web.config 中的下面这一项允许上载小于等于 8 MB 字节的文件:
    <httpRuntime maxRequestLength="8192" />
    					

更多信息

默认情况下,将此值限制在 4 MB 以限制可能出现的“拒绝服务”攻击。

如果在 Machine.config 文件中设置了 maxRequestLength 属性,其后发布的请求(例如,文件上载)超出了 maxRequestLength 的值,则无法显示自定义错误页。此时,Microsoft Internet Explorer 将显示一条错误消息“Cannot find server or DNS”。

理论上,最大文件上载大小是相当大的。但是,由于 ASP.NET 的运行状况监视,无法在 ASP.NET 中上载很大的文件。ASP.NET 工作进程具有 2 GB 的虚拟地址空间。但是,由于运行状况监视和内存碎片,ASP.NET 工作进程只能使用稍多于 1 GB 的空间。

在上载过程中,ASP.NET 首先将整个文件加载到内存中,然后用户才可以将该文件保存到磁盘。因此,由于 Machine.config 文件中 processModel 标记的 memoryLimit 属性,该进程可能会回收。memoryLimit 属性指定了 ASP.NET 工作进程在自动回收之前可以占用的物理内存的百分比。回收可防止因内存泄漏而导致 ASP.NET 崩溃或停止响应。

另外,其他因素也会影响可以上载的最大文件大小。这些因素包括可用内存、可用硬盘空间、处理器速度和当前网络流量。对于上载的常规流量的文件,Microsoft 建议您让最大文件大小介于 10 到 20 MB 之间。如果您很少上载文件,则最大文件大小可以为 100 MB。

注意:在 ASP.NET 中可以上载大于 100 MB 的文件。但是,Microsoft 建议您遵照本文中提到的最大文件上载大小。要确定更加精确的文件大小,请对一些类似于在生产中使用的计算机执行压力测试。

如果在文件上载过程中遇到了文件大小限制,可能会看到以下错误消息:
  • 该页无法显示。
  • 服务器应用程序不可用
    在事件日志中,该错误消息将与以下内容类似:

    aspnet_wp.exe (PID:PIDNumber) 被回收,因为内存消耗超过了 SizeLimit MB(可用 RAM 的百分之 Percentage)。

  • 引发了类型为 System.OutOfMemoryException 的异常。
您还会发现上载速度变得很慢。如果在 Windows 任务管理器中监视 Aspnet_wp.exe 进程,您将注意到内存的增量变化为每 1 至 2 秒 64 KB。根据文件的大小,这种延迟可能会导致 ASP.NET 工作进程由于 responseDeadlock 错误而回收。

属性

文章编号: 295626 - 最后修改: 2007年10月26日 - 修订: 6.4
这篇文章中的信息适用于:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
关键字:?
kbproductlink kbconfig kbprb kbservercontrols KB295626
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com