2008-09-24 2 views
3

바탕 화면 배경에서 오는 표준 오류 화면이 나타나지 않도록 오류 페이지로 잡힌 예외를 전달하는 방법을 정확하게 모르겠습니다. 사용자.ASP.net/C#의 오류 화면에 예외 전달

내 일반적인 질문은 페이지 X의 예외를 ASP.net의 내 오류 페이지로 전달하는 방법입니다. 예외를 잡기 위해 Application_Exception 처리기 한 후 오류 페이지에 표시하기위한 보관 -

답변

6

난의 Web.config의 customErrors에 섹션을 사용하는 것이 좋습니다 : 다음

<customErrors mode="RemoteOnly" defaultRedirect="/error.html"> 
     <error statusCode="403" redirect="/accessdenied.html" /> 
     <error statusCode="404" redirect="/pagenotfound.html" /> 
    </customErrors> 

그리고 이메일 및/또는 오류를 기록하는 ELMAH를 사용하여.

0

나는 당신이 Global.asax에를 사용할 수 있다고 생각합니다.

하지만 실제로는 오류 페이지에 다른 오류가 발생할 수있는 코드가 없어야합니다. 간단한 "죄송합니다! 뭔가 잘못되었습니다"페이지 여야합니다.

오류에 대한 자세한 내용을 보려면 Windows 이벤트 뷰어 또는 ELMAH을 사용하거나 일부 로깅 메커니즘을 사용하십시오.

+0

나는 "열정이 잘못되었습니다"라는 열정으로 싫어합니다. "Oops"페이지로 연결될 수있는 오류보고 페이지 주변에는 사소한 오류 처리가 있어야하지만, 해당 Oops 페이지에 도달하면 아무것도 실행되지 않아야합니다. 나는 telligent의 코더와 그 밖의 다른 사람에게이 wedgie와 swirly를 동시에 유죄로주고 싶습니다. –

+0

@ stimpy77 그것은 다릅니다 ... 때로는 이벤트 로그와 ELMAH를위한 것입니다 ... 그리고 오류 페이지는 사용자를 진정시키는 것입니다. – chakrit

1

는 asp.net에서 사용자 지정 오류 페이지를 사용하여, 당신은 Web.config의에서 customError 섹션에서 찾을 수 있습니다

2

내가 사용하는 패턴은 (log4net를 사용) try/catch 블록에서 오류를 기록하는 것입니다 , 그런 다음 간단한 오류 페이지로 response.redirect를 수행하십시오. 이는 오류 세부 사항을 표시 할 필요가 없다고 가정합니다.

별도의 페이지에서 예외 세부 사항이 필요한 경우 Server.GetLastError를 살펴볼 수 있습니다. global.asax (Application_Error 이벤트에서)를 사용하여 처리되지 않은 예외를 기록하고 오류 페이지로 리디렉션합니다.

2

Global.asax Application_Error 이벤트에서 예외를 캡처하여 세션에 저장하고 오류 페이지로 리디렉션하는 것이 좋습니다. 또는 오류 메시지를 인코딩하여 쿼리 문자열의 오류 페이지로 전달할 수 있습니다.

2

또한 우리는 Global.asax 파일에서 예외를 캡처 세션에 저장

Server.GetLastError(); 
1

에서 예외를 얻을 수 있습니다, 사용자는 그 다음 우리가에 대한 예외를 잡아 오류 페이지로 리디렉션됩니다 우리 세션 변수 및 메시지 정보를 사용자에게 표시합니다.

protected void Application_Error(object sender, EventArgs e) 
    { 
     Exception ex = Server.GetLastError(); 
     this.Session[CacheProvider.ToCacheKey(CacheKeys.LastError)] = ex; 
    } 

사용자에게 표시하기 전에 오류 메시지를 기록합니다.

+0

이 시도했지만 global.asax 및 aspx 페이지에서 세션 [ "오류"] 사용할 때 작동하지 않습니다. –