При работе под IIS7 и выше есть еще один параметр:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="10485760" />
</requestFiltering>
</security>
</system.webServer>
Значение по умолчанию немного меньше 30 МБ.
Для загруженных файлов размером от maxRequestLength
до maxAllowedContentLength
IIS7 выдаст HttpException
с HTTP-кодом 500 и текстом сообщения Maximum request length exceeded
. Когда выдается это исключение, IIS7 немедленно разрывает соединение. Таким образом, HttpModule
, который перенаправляет на эту ошибку, будет работать, только если HttpException
обработан и очищен (с использованием Server.ClearError()
) в Application_Error()
в global.asax.cs.
Для загруженных файлов размером больше maxAllowedContentLength
IIS7 отобразит подробную страницу ошибки с кодом ошибки 404 и subStatusCode
13. Страница ошибки находится в C: \ inetpub \ custerr \ en-US \ 404- 13.htm
Для перенаправлений с этой ошибкой на IIS7 я рекомендую вместо этого перенаправлять на httpErrors
.
Чтобы перенаправить на другое действие, установите меньшее значение для maxAllowedContentLength
, чем maxRequestLength
в web.config, а также добавьте в 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>