PRB: Cannot Upload Large Files When You Use the HtmlInputFile Server Control (295626)
The information in this article applies to:
- Microsoft ASP.NET (included with the .NET Framework 1.1)
- Microsoft ASP.NET (included with the .NET Framework) 1.0
This article was previously published under Q295626 SYMPTOMS
When you try to use the HtmlInputFile control to upload a large file, the file may not be uploaded.
CAUSE
This problem occurs because the default value for the maxRequestLength parameter in the <httpRuntime> section of the Machine.config file is 4096 (4 megabytes). As a result, files that are larger than this value are not uploaded by default.
RESOLUTION
To resolve this problem, use one of the following methods:
MORE INFORMATION
By default, this value is restricted to 4 MB to restrict possible Denial of Service attacks.
When the maxRequestLength attribute is set in the Machine.config file and then a request is posted (for example, a file upload) that exceeds the value of maxRequestLength, a custom error page cannot be displayed. Instead, Microsoft Internet Explorer will display a "Cannot find server or DNS" error message.
Theoretically, the maximum file upload size is fairly
large.
However, because of ASP.NET health monitoring, you cannot upload very large
files in ASP.NET. The ASP.NET worker process has a virtual address space of 2 gigabytes (GB).
However, the ASP.NET worker process only uses a little more than 1
GB because of health monitoring and memory fragmentation. During the upload process,
ASP.NET loads the whole
file in memory before the user can save the file to the disk. Therefore,
the process may recycle because of the memoryLimit attribute of
the processModel tag in the Machine.config file. The memoryLimit attribute specifies the percentage of physical memory that the
ASP.NET worker process can exhaust before the process
is automatically recycled. Recycling prevents memory leaks from causing ASP.NET
to crash or to stop responding. Additionally, other factors play a
role in the maximum file size that can be uploaded. These factors include
available memory, available hard disk space, processor speed, and current
network traffic. With regular traffic of files being uploaded, Microsoft
recommends that you use a maximum file size in the range of 10 to 20 megabytes
(MB). If you rarely upload files, the maximum file size may be 100 MB.
Note You can upload files that are larger than 100 MB
in ASP.NET.
However, Microsoft recommends that you follow the maximum file upload sizes
that are mentioned in this article. To determine more precise file sizes,
perform stress testing on computers that are similar to the ones that will be
used in production. You may notice the following error messages if
you encounter file size limits during the file upload process:
The page cannot be
displayed. Server Application is
Unavailable In the event log, the error message will be similar to the
following: aspnet_wp.exe
(PID:PIDNumber) was recycled because memory
consumption exceeded the SizeLimit MB
(Percentage percent of available
RAM).Exception of type
System.OutOfMemoryException was thrown.
You may also find
that uploads occur very slowly. If you watch
the Aspnet_wp.exe process in Windows Task Manager, you will notice that the
memory delta changes by 64 KB every 1 to 2 seconds. Depending on the size of
the file, this delay may cause the ASP.NET worker process to recycle because of
a responseDeadlock error.
| Modification Type: | Major | Last Reviewed: | 11/4/2003 |
|---|
| Keywords: | kbConfig kbprb kbServerControls KB295626 |
|---|
|