When running under IIS7 and upwards there is another parameter:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="10485760" />
</requestFiltering>
</security>
</system.webServer>
The default setting is slightly less than 30 MB.
For uploaded files with size between maxRequestLength
and maxAllowedContentLength
IIS7 will throw an HttpException
with HTTP code 500 and message text Maximum request length exceeded
. When this exception is thrown, IIS7 kills the connection immediately. So an HttpModule
that redirects on this error will only work if the HttpException
is handled and cleared (using Server.ClearError()
) in Application_Error()
in global.asax.cs.
For uploaded files with size bigger than maxAllowedContentLength
IIS7 will display a detailed error page with error code 404 and subStatusCode
13. The error page can be found in C:inetpubcusterren-US404-13.htm
For redirects on this error on IIS7 I recommend redirecting on httpErrors
instead.
To redirect to a different action set a smaller value for maxAllowedContentLength
than maxRequestLength
in web.config and also add the following to web.config:
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" subStatusCode="13" />
<error statusCode="404" subStatusCode="13" prefixLanguageFilePath=""
path="http://yoursite.com/Error/UploadTooLarge" responseMode="Redirect" />
</httpErrors>
</system.webServer>
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…