programing

ASP.NET에서 "스레드가 중단되었습니다"가 표시되는 이유는 무엇입니까?

testmans 2023. 7. 4. 21:45
반응형

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

반응형