사용자가 파일을 업로드 할 수 있도록 허용하는 aspx 페이지가 있으며 최대 파일 업로드 크기를 10MB로 제한하려고합니다. IIS7, .NET 3.5. 나는 내 web.config 파일에 구성된 다음 한 :IIS7에서 maxAllowedContentLength를 초과하고 처리 할 수있는 곳은 어디입니까?
<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
를 구현하는 모듈을 처리하는 사용자 지정 오류가 있습니다. 나는 maxRequestLength
을 초과하면 HttpApplication.Error
이 실제로 일어났습니다. 그러나 maxAllowedContentLength
으로 재생하면 HttpApplication.Error
이벤트가 발생하지 않고 사용자가 404.13 페이지로 리디렉션됩니다. Visual Studio에 첨부 된 첫 번째 예외가 발생하면 아무 것도 표시되지 않습니다.
첫 번째 생각은 이전 이벤트의 헤더 콘텐츠 길이를 확인하는 것입니다. 권장 사항/모범 사례가 있습니까? PostLogRequest? EndRequest?
sunflowerpower의 답변은 Managed Pipeline Mode가 Integrated로 설정된 경우에만 작동합니다. 적어도 그것이 내가 경험 한 이유입니다. – Marvin
이 솔루션이 인증을 제대로 처리하지 못한다는 사실을 알고 있습니다. Server.Transfer를 호출하면 HttpContext.Current.User 속성이 NULL이기 때문에 대상 페이지의 인증 확인 루틴이 실패합니다. 해당 줄을 꺼내면 여전히 문제가 발생하므로 머리글을 지우는 것으로 인해 발생하는 것 같지 않습니다. 이 주위에 어떤 방법이 있습니까? 그렇지 않으면 해결책이 아닙니다. – Triynko
@Triynko의 오류 코드를 이벤트 처리기에 넣습니다. 나는 Umbraco를 사용하고 있습니다. 중요한지는 확실치 않지만, 이것이 'Maximum request length exceeded'예외를 아직 잡을 수 있었던 유일한 곳입니다. 나는 또한 'Response.ClearContent();'를 호출해야했다. YSOD를 제거합니다. 'Application_Error'는이 예외 (RequestValidation에서 발생하지만)에 대해 실행되지 않으며 UserControl 또는 Masterpage에서 발생시키는 'OnError'를 가져올 수 없습니다. 실제 페이지를 찾을 수 없습니다. ;) –