Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I configure IIS to handle really large file uploads?

Platform: IIS 6, ASP.Net 2.0 (.Net 3.5), Server 2003.

I'm building an application that accepts files from a user, processes them, and returns a result. The file is uploaded using HTTP POST to an ASP.Net web form. The application is expecting some large files (hundreds of MB).

I'm using SWFUpload to accomplish the upload with a nice progress bar, but that's not contributing to the issue, because when I bypass it using a standard HTML form pointing at my upload accepter page, I get the exact same error. When using the progress bar, the upload continues to 100%, then fails. With a standard form, the behavior appears to be the same.

I'm having a problem right now uploading a file that's about 150MB. I've changed every settings I can find, but still no luck.

Here's a summary of what I've changed so far:

In Web.config: Added this inside system.web:

<httpRuntime executionTimeout="3600" maxRequestLength="1536000"/>

In machine.config: Inside system.web, changed:

<processModel autoConfig="true" />

to:

<processModel autoConfig="true" responseDeadlockInterval="00:30:00" responseRestartDeadlockInterval="00:30:00" />

and in MetaBase.xml: Changed:

AspMaxRequestEntityAllowed="204800"

to:

AspMaxRequestEntityAllowed="200000000"

When the upload fails, I get a 404 error from IIS. My web form does not begin processing, or at least, it doesn't make it to the Page_Load event. I threw an exception at the beginning of that handler, and it doesn't execute at all on large files.

Everything works fine with smaller files (I've tested up to about 5.5MB). I'm not exactly sure what file size is the limit, but I know that my limit needs to be higher than 150MB, since this is not the largest file that the client will need to upload.

Can anyone help?

like image 200
Chris Weisel Avatar asked Feb 03 '23 13:02

Chris Weisel


2 Answers

Urlscan was active on all websites, and has it's own request entity length limit. I wasn't aware that Urlscan was running on our server because it was a global ISAPI filter, not running on my individual website.

Note: to locate global ISAPI filters, right click on the Web Sites folder in IIS Admin and click Properties, then on the ISAPI Filters tab.

like image 146
Chris Weisel Avatar answered Feb 16 '23 02:02

Chris Weisel


(A note for googlers):

For IIS7 add below to web.config (I added above <system.serviceModel>):

<system.webServer>
        <security>
            <requestFiltering><requestLimits maxAllowedContentLength="262144000" /></requestFiltering> <!-- maxAllowedContentLength is in bytes. Defaults to 30,000,000 -->
        </security>
</system.webServer>
like image 45
Manish Jain Avatar answered Feb 16 '23 03:02

Manish Jain