У меня есть страница aspx, где Im позволяет пользователю загружать файл, и я хочу ограничить максимальный размер загрузки файлов размером 10 МБ. IIS7,.NET 3.5. В моем файле web.config у меня есть следующее:
<location path="foo.aspx">
<system.web>
<!-- maxRequestLength: kbytes, executionTimeout:seconds -->
<httpRuntime maxRequestLength="10240" executionTimeout="120" />
<authorization>
<allow roles="customRole"/>
<!-- Deny everyone else -->
<deny users="*"/>
</authorization>
</system.web>
<system.webServer>
<security>
<requestFiltering>
<!-- maxAllowedContentLength: bytes -->
<requestLimits maxAllowedContentLength="10240000"/>
</requestFiltering>
</security>
<handlers accessPolicy="Read, Script">
<add name="foo" path="foo.aspx" verb="POST"
type="System.Web.UI.PageHandlerFactory"
preCondition="integratedMode" />
</handlers>
</system.webServer>
</location>
У меня есть настраиваемый модуль обработки ошибок, который реализует IHttpModule
. Ive обнаружил, что когда maxRequestLength
превышено, HttpApplication.Error
действительно поднимается. Однако, когда я играю с maxAllowedContentLength
, событие HttpApplication.Error
не поднимается, и пользователь перенаправляется на страницу 404.13. Я подключился к Visual Studio с первым шансом, что ничто не забрасывается.
Моя первая мысль - проверить длину содержимого заголовка в более раннем событии - есть ли рекомендации/лучшие практики, где я это делаю? PostLogRequest? EndRequest?