2011-04-09 2 views
6

Webform1.aspx.cs :Application_Error가 실행되지 않습니까?

protected void Page_Load(object sender, EventArgs e) 
{ 
    throw new Exception("test exception"); 
} 

Global.asax.cs에서 :

protected void Application_Error(object sender, EventArgs e) 
{ 
    // Code that runs when an unhandled error occurs 
    if (Server.GetLastError() is HttpUnhandledException) 
     Server.Transfer("ErrUnknown.aspx"); 
} 

그러나 Application_Error 이벤트 처리기는 절대로 호출되지 않습니다. 대신 런타임 오류 페이지가 표시됩니다.

예외가 throw 된 후 Application_Error가 호출되면 무엇을해야합니까?

+0

web.config에서 사용자 정의 오류 섹션에 대한 설명은 무엇입니까? – Rich

+0

아무 것도. customErrors 섹션을 언급하고 있습니까? – ChrisPeeters

+0

예, 또한 해당 컴파일 확인 Debug = True [설정] (http://msdn.microsoft.com/en-us/library/e8z01xdh%28v=vs.80%29.aspx) – Rich

답변

5

괜찮아 보이고 Application_Error가 호출되어야합니다.

Debugging 신청서를 확인 했습니까?

실제로는 Server.ClearError()이 누락되어 예외가 asp.net으로 전달되지만 사용자가 직접 처리하므로 억압해야합니다.

protected void Application_Error(object sender, EventArgs e) 
{ 
    // Code that runs when an unhandled error occurs 
    if (Server.GetLastError() is HttpUnhandledException) 
    { 
     // suppressing the error so it should not pass to asp.net 
     Server.ClearError(); 
     Server.Transfer("ErrUnknown.aspx"); 
    } 
} 
+0

안녕하세요. 디버거가 예외를 throw하는 문에서 Page_Load를 중단하고 Application_Error를 계속 수행하지 않습니다. 제안 사항이 있으십니까? – ChrisPeeters

1

이 문제점을 발견했습니다.

Server.Transfer("ErrUnknown.aspx") 

이 원인입니다.

브라우저에서 'ErrUnknown.aspx'를 직접 보려고하면 해당 페이지에서 오류가 있음을 알았습니다. 그것을 수정 한 후 Server.Transfer 작동

비록 응용 프로그램을 디버깅하는 동안 이벤트가 시작되지 않습니다 오해의 소지가 있었습니까?

어쨌든.

+0

모두를위한 해결책이라고 확신하지 못합니다. –

관련 문제