ASP.NET 리디렉션에서 ThreadAbortException 처리
문제:
ASP.NET에서 페이지 리디렉션을 위해 Response.Redirect(...)
을 사용할 때 무서운 "System.Threading.ThreadAbortException" 오류가 발생할 수 있습니다.
예외 이해:
이 예외는 Response.Redirect
이 기본적으로 리디렉션 명령 이후에 코드를 계속 실행하기 때문에 발생합니다. 그러면 웹 서버가 요청을 조기에 종료하여 예외가 발생합니다.
해결책: 리디렉션 제어
이를 방지하는 가장 좋은 방법은 응답 종료를 제어할 수 있는 Response.Redirect
오버로드를 사용하는 것입니다.
<code class="language-csharp">Response.Redirect(url, false); Context.ApplicationInstance.CompleteRequest();</code>
endResponse
매개변수를 false
로 설정하면 요청이 즉시 종료되는 것을 방지할 수 있습니다. Context.ApplicationInstance.CompleteRequest()
그런 다음 EndRequest
단계로 직접 진행하도록 IIS에 명시적으로 신호를 보내 리디렉션 후 불필요한 코드 실행을 방지하여 성능을 최적화합니다.
이것이 더 좋은 이유:
단순히 Response.Redirect(url, true)
을 사용하는 것이 해결책처럼 보일 수 있지만 리디렉션이 적용되기 전에 페이지의 나머지 코드가 (잠깐이라도) 계속 실행되므로 성능 문제가 발생할 수 있습니다. 위의 방법은 더 깨끗하고 효율적인 리디렉션을 제공합니다.
추가 자료:
Application_Error
핸들러 내 리디렉션과 같은 극단적인 경우 처리에 대해 자세히 알아보려면 Thomas Marquardt의 블로그와 같은 리소스를 참조하세요(사용 가능한 경우 여기에 링크가 삽입됨).
위 내용은 ASP.NET에서 Response.Redirect 중에 ThreadAbortException을 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!