최근에 요청이 처리 된 다른 스레드에서 Application_Error 이벤트 처리기 (HttpApplication.Error)가 호출되는 문제가 발생했습니다.Application_Error가 다른 스레드에서 실행되었습니다.
것 우리는 최근에 변경된 :
- 32 비트의 가치는 여기를 설명 할 수있는 몇 가지 코드가 무엇을 위해
하나의 대표적인 테스트에서 페이지에 표시된 스레드는 7이고 전자 메일의 스레드는 10입니다.
//The application
public class MyApplication : HttpApplication
{
protected virtual void Application_Error(ByVal sender As Object, ByVal e As EventArgs)
{
var threadId = System.Threading.Thread.Current.ManagedThreadId;
SendEmail("There was an error on threadId " + threadId.ToString());
}
private void SendEmail(string message)
{
//snip
}
}
//Some aspx page
<%
var threadId = System.Threading.Thread.Current.ManagedThreadId;
throw new Exception("This is a test. ThreadId = " + threadID.ToString());
%>
Thread.CurrentPrincipal에 인증 정보를 저장하는 중 문제가 발생하므로 예외와 함께 해당 정보를 기록해야합니다.
어떻게 내가 같은 스레드에 유지하거나 IIS가 나에게 CurrentPrincipal을 원래 스레드에서 제공하게 할 수 있습니까?
이것은 오류가 throw되는 스레드 때문입니다. 던져지는 예외는 무엇입니까? – Justin
@ Justin 나는 당신이 오해한다고 생각합니다. 이는 예외 일 수 있으며 예외가 throw 된 스레드는 Application_Error가 실행되는 스레드와 다릅니다. 이것은 응용 프로그램에서 처리되지 않은 예외를 기록하는 데 사용됩니다. – csauve
흠 ... 정확히 threadID가 동일해야하는 이유는 무엇입니까? 실제 질문을 통해 질문을 명확히하는 것이 좋습니다. 지금까지는 "이 동작을 봅니다"라고 말하면서이 문제가 무엇인지 또는 실제 문제가 – Earlz