내 global.asax.cs 파일에서 HttpRequestValidationException을 처리하는 코드 조각이 있습니다.프로덕션에서 HttpRequestValidationException을 catch하는 방법
protected void Application_Error(object sender, EventArgs e)
{
var context = HttpContext.Current;
var exception = context.Server.GetLastError();
if (exception is HttpRequestValidationException)
{
Response.Clear();
Response.StatusCode = 200;
Response.Write(@"<html><head></head><body>hello</body></html>");
Response.End();
return;
}
}
웹 응용 프로그램을 디버깅하면 완벽하게 작동합니다. 하지만 프로덕션 서버에 올려 놓으면 서버가이를 무시하고 잠재적으로 위험한 request.form 값 을 클라이언트에서 발견했습니다 "- 오류 페이지를 생성합니다. 정확히 무슨 일이 일어날 지 모르겠다 ... 누군가가 문제가 무엇인지, 또는 내가 뭘 잘못 알고 있는지 ...
또한 web.config에서 validaterequest를 false로 설정하고 싶지 않습니다.
서버는 IIS7.5를 사용하며 asp.net 3.5를 사용하고 있습니다.
덕분에,
"컨텍스트"var이 필요하지 않다고 생각합니다. 그것은 "Server.GetLastError()"및 "Server.ClearError()"로 잘 작동합니다. – WildJoe
Response.End()는 의도적으로 예외를 throw합니다. 대신 이것을 사용하십시오 : 'HttpContext.Current.ApplicationInstance.CompleteRequest'. 설명을 보려면 다음을 참조하십시오. https://support.microsoft.com/en-us/help/312629/prb-threadabortexception-occurs-if-you-use-response-end-response-redir – Kamran