2009-11-15 4 views
1

예외 발생시 Response.Redirect를 사용하여 브라우저를 리디렉션하고 싶습니다.
또한 예외 메시지를 내 오류 페이지로 전달하려고합니다. 예를 들어오류 페이지로 리디렉션

: 그것은

string URL = "Page2.aspx?Exception=" + ex.ToString() 
Response.Redirect(URL) 

을 할 수 있습니까? 이것이 올바른 구문입니까?

답변

6

다른 페이지를 요청하는 클라이언트에 응답을 보내는 Response.Redirect 대신 Server.Transfer을 호출하면 바로 다른 페이지가 실행되어 해당 페이지가 클라이언트에 직접 전송됩니다.

그러면 예외 페이지를 HttpContext.Items에 넣고 오류 페이지의 HttpContext.Items에서 읽을 수 있습니다. 예를 들어

:

<% 
    Exception error; 
    if (!HttpContext.Current.Items.Contains("Exception")) 
     Response.Redirect("/"); //There was no error; the user typed Error.aspx into the browser 
    error = (Exception)HttpContext.Current.Items["Exception"]; 
%> 
1

예 (당신은 아마 예외 메시지를 보내려는 물론 추가 된 일부 세미콜론 등) 문제가 해결 것 :

String URL = "Page2.aspx?Exception=" + ex.Message; 
Response.Redirect(URL); 
0

일반적으로 내 페이지에서 패널을 가지고에 catch 블록에서 가시성을 전환 할 것 사용자에게 친숙한 메시지를 표시합니다. 또한 오류 메시지를 자세히 설명하는 전자 메일로 된 보고서를 포함합니다.

다른 페이지에 오류를 전달보고 /에 관해서는
try 
{ 

} 
catch (Exception ex) 
{ 
    formPanel.Visible = false; 
    errorPanel.Visible = true; 

    // Log error 
    LogError(ex); 
} 

:

string errorURL = "ErrorPage.aspx?message=" + ex.Message; 
Response.Redirect(errorURL, true); 

그리고 ELMAH를 잊지 마세요! http://bit.ly/HsnFh

0

Andrew가 말했듯이, 작동해야합니다.

그러나 오류 관리를 찾으려면 Server.GetLastError()을 사용하는 것이 더 좋으므로 스택 추적을 포함하여 Exception 개체 전체를 가져옵니다.

일반적으로 MSDN article that deals with Application Errors이며 Server.GetLastError()을 사용합니다.

0

우리는 항상 오류 상태에 .aspx 페이지로 리디렉션에 대한 권합니다 :

catch (Exception ex) { 
    HttpContext.Current.Items.Add("Exception", ex); 
    Server.Transfer("Error.aspx"); 
} 

Error.aspx에서, 당신은 다음과 같은 예외를 얻을 수 있습니다.

이전에는 응용 프로그램의 근본적인 문제로 인해 오류가 발생하여 차례로 오류가 발생한 error.aspx 페이지로 리디렉션되는 시나리오를 보았습니다.이 페이지에서는 오류가 발생하여 무한 리디렉션 루프가 발생했습니다.

사람들이 .htm 페이지 또는 ASP.NET 프레임 워크에서 오류 페이지에 대해 처리하지 않는 것을 사용하는 것이 좋습니다.

Web.config의 customErrors 섹션을 사용하여 ASP.NET에서 지원 기능이 자동으로 처리되므로 오류 리디렉션이 자동으로 처리됩니다.당신은 너무 처리 글로벌 예외로 볼 수

customError tag

,이, 당신은 Global.asax에 내

감사를 찾을 수 Application_OnError 이벤트를 통해

을 관리 할 수 ​​있습니다 http://exceptioneer.com

관련 문제