By default, IIS7 limits file upload to 30MB. Oddly, it returns a 404 error if someone uploads something larger than 30MB. The docs from Microsoft are a little confusing on this, so I thought I would try to clarify.
According to the following article, you can "Remove the maxAllowedContentLengthproperty." from the applicationhost.config file in IIS7 to lift the 30MB limit. However, in my case, this property was never in the file to begin with.
So, my assumption on this is that the 30MB limit is somewhere internal to IIS7. The article also doesn't say where to ADD the entry requestLimits node if it isn't already there.
Luckily, there is an alternate solution that can be enabled at the site level rather than server-wide.
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="524288000"/>
</requestFiltering>
</security>
</system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="524288000"/>
</requestFiltering>
</security>
</system.webServer>
If you add the above code to the web.config file for your site, you can control the maximum upload size for your site. In many cases, the system.webServer node will already be in the file, so just add the security node within that.
Note that the maxAllowedContentLength is in BYTES not kilobytes.
You may also need to restart your Web site (not the whole server) to enable the setting.
In case you are curious, why would I want people to upload files larger than 30MB? We were working on a video conversion script that allows people to upload large MOV files and converts them to FLV.