Response.End, Response.Redirect 또는 Server.Transfer를 사용하는 경우 ThreadAbortException이 발생합니다.
이 문서에서는 , Response.Redirect
또는 Server.Transfer
를 사용하는 Response.End
경우 발생하는 ThreadAbortException 오류를 resolve 수 있습니다.
원래 제품 버전: .NET Framework 3.5 서비스 팩 1에서 ASP.NET .NET Framework 4.5.2의 ASP.NET
원본 KB 번호: 312629
증상
, Response.Redirect
또는 Server.Transfer
메서드를 Response.End
사용하는 경우 ThreadAbortException 예외가 발생합니다. 문을 사용하여 try-catch
이 예외를 catch할 수 있습니다.
원인
메서드는 Response.End
페이지 실행을 종료하고 애플리케이션의 이벤트 파이프라인에서 Application_EndRequest 이벤트로 실행을 이동합니다. 다음 Response.End
코드 줄은 실행되지 않습니다.
이 문제는 및 Server.Transfer
메서드에서 Response.Redirect
두 메서드가 Response.End를 내부적으로 호출하기 때문에 발생합니다.
해결 방법
이 문제를 해결하려면 다음 방법 중 하나를 사용합니다.
의 경우
Response.End
대신 메서드Response.End
를HttpContext.Current.ApplicationInstance.CompleteRequest
호출하여 이벤트에 대한 코드 실행을 무시합니다Application_EndRequest
.의 경우
Response.Redirect
endResponse 매개 변수에 대해 false를 전달하는 Response.Redirect(String url, bool endResponse) 오버로드를 사용하여 에 대한 내부 호출Response.End
을 표시하지 않습니다. 예를 들면Response.Redirect ("nextpage.aspx", false);
이 해결 방법을 사용하는 경우 다음
Response.Redirect
코드가 실행됩니다.의 경우
Server.Transfer
메서드를Server.Execute
대신 사용합니다.
ASP.NET 이 예외를 처리하지만 문을 사용하여 이 예외를 try-catch
catch할 수 있습니다. 예를 들면
try
{
Response.Redirect("nextpage.aspx");
}
catch (Exception ex)
{
Response.Write (ex.Message);
}
줄에 Response.Write
중단점을 추가하고 이 중단점이 적중된 것을 확인합니다. 예외를 검사할 때 ThreadAbortException 예외가 발생합니다.
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기