ASP.NET에서 "스레드가 중단되었습니다"가 표시되는 이유는 무엇입니까?
저는 왜 이런 일이 일어나는지 확신할 수 없고 절대 명시적으로 스레드를 중단하지 않기 때문에 조금 놀랍습니다.그러나 예외가 기록되고 다음과 같은 메시지가 표시됩니다.
시스템. 스레딩.ThreadAbortException - 스레드가 중단되었습니다.
그것은 통화에서 발생하는 것으로 보입니다.System.Threading.WaitHandle.WaitOne
이 예외가 어디까지 진행되는지 잘 모르겠습니다.저는 제 스레드가 결코 종료되지 않는다고 생각합니다. 왜냐하면 저는 로그를 확인하고 오류를 삼키기 때문입니다.
오류가 발생하는 이유는 무엇입니까?서버를 강제로 종료하거나 재부팅을 요청하는 경우일 수 있습니다.그렇지 않다면 무엇이 그들을 야기시킬 수 있습니까?
아니.ThreadAbortException
단순한 것에 의해 던져집니다.
ASP.NET은 필요에 따라 항상 작업자 프로세스를 생성하고 종료합니다.스레드가 ASP.NET에 의해 종료되고 있을 수 있습니다.
이전 답변:
알려진 문제: PRB: 응답을 사용하는 경우 스레드 중단 예외가 발생합니다.끝, 응답.리디렉션 또는 서버.전송
Response.Redirect ("bla.aspx", false);
또는
try
{
Response.Redirect("bla.aspx");
}
catch (ThreadAbortException ex)
{
}
스레드를 생성하는 경우Application_Start
애플리케이션 풀에서 계속 실행됩니다.AppDomain
.
애플리케이션이 일정 시간 동안 유휴 상태이거나(요청이 들어오지 않음을 의미) 특정 다른 조건이 충족된 경우,ASP.NET
전체를 재활용할 것입니다.AppDomain
.
그런 일이 발생하면, 당신이 그것으로부터 시작한 모든 스레드가AppDomain
의 사람들을 포함하여Application_Start
중단됩니다.
애플리케이션 풀 및 재활용에 대한 자세한 내용은 다음 질문을 참조하십시오.Appdomain 재활용이란 무엇입니까?
다음 기간 내에 장기 실행 프로세스를 실행하려는 경우IIS/ASP.NET
짧은 대답은 보통 "하지 마"입니다.이것이 바로 Windows 서비스의 목적입니다.
ASP.NET에서 호스팅되는 웹 서비스의 경우 구성 속성이 실행 중입니다.시간 초과:
<configuration> <system.web>
<httpRuntime executionTimeout="360" />
</system.web>
</configuration>
이것을 설정하면 스레드 중단 예외가 사라집니다 :)
이 문제는 에서 발생합니다.Response.Redirect
그리고.Server.Transfer
메서드, 두 메서드 모두 호출하기 때문에Response.End
내부적으로
이 문제에 대한 해결책은 다음과 같습니다.
위해서Server.Transfer
을 사용합니다.Server.Execute
대신 방법.
이 오류는 응답을 두 번 이상 종료하려고 할 때 발생할 수 있습니다.이미 언급한 다른 답변들처럼, 응답을 끝낼 다양한 방법들이 있습니다.Response.End
또는Response.Redirect
). 연속적으로 두 개 이상의 전화를 걸면 이 오류가 발생합니다.
사용하려고 할 때 이 오류가 발생했습니다.Response.End
사용 후Response.TransmitFile
그것도 반응을 끝낼 것으로 보입니다.
▁a▁i▁when다▁error▁did니▁this▁got를 할 때 이 오류가 발생했습니다.Response.Redirect
사용자가 성공적으로 로그인한 후.
저는 그것을 고쳤습니다.FormsAuthentication.RedirectFromLoginPage
대신.
언급URL : https://stackoverflow.com/questions/7629986/why-am-i-getting-thread-was-being-aborted-in-asp-net
'programing' 카테고리의 다른 글
유형 스크립트와 기본적으로 대응하는 플랫폼별 가져오기 구성 요소 (0) | 2023.07.04 |
---|---|
jQuery 이벤트 선택 변경 선택 항목 가져오기 옵션 (0) | 2023.07.04 |
Mongo 셸이 파일에서 쿼리를 실행하고 결과를 표시합니다. (0) | 2023.07.04 |
UITableView 일부 셀을 "선택할 수 없음"으로 설정 (0) | 2023.07.04 |
T-SQL, 단일 선택에서 둘 이상의 변수 업데이트 (0) | 2023.07.04 |