IIS 오류 페이지에서 이상한 동작을 발견했습니다. 이 설정이 있습니다.
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="500" />
<error statusCode="500" responseMode="ExecuteURL" path="/error-page" />
</httpErrors>
때때로 쿼리 문자열이 너무 길어서 ASP.NET 오류가 발생하면 오류 페이지 URL을 실행하는 동안 두 번째 오류가 즉시 발생합니다. IIS가 원래 URL을 오류 페이지 URL에 다음과 같이 추가한다는 사실에 대한 문제를 추적했습니다.
Original: http://example.com/someurl?id=some_very_long_query_string_causing_security_exception
Error: /error-page?500;http://example.com/someurl?id=some_very_long_query_string_causing_security_exception
이것은 큰 문제입니다. 원래 URL에 쿼리 문자열이 너무 길어서 실패하면 추가 된 항목이 포함 된 오류 페이지에도 쿼리 문자열이 더 길어 실패합니다!
나는 이것이 IIS에서 가장 멍청한 버그라고 생각합니다. 이를위한 서비스 팩 패치가 있는지 아는 사람이 있습니까? 지금까지 해결되지 않은 최악의 시나리오,이 동작을 비활성화하는 방법이나 IIS가 요청하지 않은 것들을 오류 페이지에 추가하는 것을 막는 방법이 있습니까? 전체 사용자 정의 오류 페이지 메커니즘을 위반하기 때문입니다.
답변
경로에 후행 슬래시 (예 : path = “/ error-page /”)를 추가하면 오류 코드와 URL이 추가되지 않습니다. 예를 들어 원래의 실패한 URL을 유지합니다.
- 슬래시 가 없으면 오류 페이지의 내용이 URL과 함께 표시됩니다.
http://example.com/error-page?500;http://example.com/failingpage - 후행 슬래시가 있으면 오류 페이지의 내용이 URL과 함께 표시됩니다.
http://example.com/failingpage
답변
비슷한 문제가 오래 전에 문제의 시스템에서 정적 오류 페이지를 사용합니다.
defaultResponseMode에서 단일 정적 페이지를 제공하는 파일로 설정할 수 있습니다.