-
07-07-2019 - |
문제
나는 사용 중입니다 Server.Transfer. 모든 것이 잘 작동하지만 예외 로그는 예외에 따라 표시됩니다.
System.Threading.ThreadAbortException: Thread was being aborted.
at System.Threading.Thread.AbortInternal()
at System.Threading.Thread.Abort(Object stateInfo)
at System.Web.HttpResponse.End()
at System.Web.HttpServerUtility.Transfer(String path, Boolean preserveForm)
at System.Web.HttpServerUtility.Transfer(String path)
위의 예외를 피하려는 아이디어.
해결책
이 예외는 전화로 던져집니다 Server.Transfer
현재 방법의 실행을 중단하려면 - 정확히 같은 일이 발생하면 Response.Redirect
.
당신이 가진 두 가지 선택은 다음과 같습니다.
- ThreadabortException / Reperform을 잡아서 재검토하십시오
Server.Transfer
- 당신만이하는지 확인하십시오
Server.Transfer
잡히지 않는 곳에서 (권장)
편집하다: 그것을 긁어 http://support.microsoft.com/kb/312629 시도해 볼 몇 가지 다른 제안이 있지만 여전히 위의 #2를 추천합니다.
다른 팁
이것을 해결하는 또 다른 방법은 생성 된 오류를 포착하고 그것을 재검사하지 않는 것입니다.
catch (ThreadAbortException)
{
}
Caling Server.Transfer는 항상 ThreadAbortException을 던지는 Response.end를 호출합니다. 캐치 블록에 잡힐 수 있지만 항상 캐치 블록의 끝에 다시 던져지기 때문에 "특별한"예외입니다. 오류 로깅이 ThreadabortExceptions를 무시하게됩니다.
이 문제는 응답 및 Server.Transfer 메소드에서 발생합니다.
이 문제에 대한 해결책은 다음과 같습니다.
Server.Transfer의 경우 Server.Execute 메소드를 대신 사용하십시오.
다운로드 샘플 예제는이 링크를 방문하십시오. http://jayeshsorathia.blogspot.com/2012/03/thread-was-being-aborted-error-occured.html
다음으로 응답을 대체하면 다음과 같은 문제를 해결하는 데 도움이되었습니다.
응답 .Flush (); 응답 .close ();
바꾸다 Response.End()
와 함께 HttpContext.Current.ApplicationInstance.CompleteRequest();