달력

32024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

http://support.microsoft.com/kb/312629



PRB: Response.End, Response.Redirect 또는 Server.Transfer를 사용하면 ThreadAbortException이 발생한다

기술 자료 ID : 312629
마지막 검토 : 2006년 1월 20일 금요일
수정 : 2.4
이 문서는 이전에 다음 ID로 출판되었음: KR312629

현상

Response.End, Response.Redirect 또는 Server.Transfer 메서드를 사용하면 ThreadAbortException 예외가 발생합니다. try-catch 문을 사용하면 이 예외를 catch할 수 있습니다.

위로 가기

원인

Response.End 메서드는 페이지 실행을 종료시키고 해당 응용 프로그램 이벤트 파이프라인의 Application_EndRequest 이벤트로 실행을 이동합니다. Response.End 다음에 오는 코드 줄들은 실행되지 않습니다.

Response.Redirect 메서드와 Server.Transfer 메서드가 모두 내부적으로 Response.End를 호출하기 때문에 이러한 문제가 발생합니다.

위로 가기

해결 방법

이 문제를 해결하려면 다음 방법 중 하나를 사용하십시오.
Response.End의 경우 Response.End 대신 HttpContext.Current.ApplicationInstance.CompleteRequest 메서드를 호출하여 Application_EndRequest 이벤트에 대한 코드 실행을 무시합니다.
Response.Redirect의 경우 endResponse 매개 변수에 대해 false를 전달하여 Response.End를 내부적으로 호출하지 않도록 하는 Response.Redirect(String url, bool endResponse) 오버로드를 사용합니다. 예는 다음과 같습니다.
  Response.Redirect ("nextpage.aspx", false);
						
이 해결 방법을 사용하면 Response.Redirect 다음에 오는 코드가 실행됩니다.
Server.Transfer의 경우 Server.Execute 메서드를 대신 사용합니다.

위로 가기

현재 상태

이것은 의도적으로 설계된 동작입니다.
Posted by tornado
|