2009-03-21 6 views
4

모든 예외를 추적하고 필요한 정보를 데이터베이스에 기록하고 오류에 대해 알아야하는 개발자에게 이메일을 보내려는 오류 처리 기능이 있습니다. 그것을 고쳐라. 내가 만나는 문제는 페이지가 완전히로드되기 전에 오류가 발생할 때입니다. 이 경우 추적 할 세션 변수는 Application_Error에서 사용할 수 없습니다. 그래서 나는 오류 처리에 오류가 없도록 다음을 수행하지만 더 좋은 방법이 있어야합니다. 또한 페이지가로드되고 양식 제출시 오류가 발생하면 세션 변수를 사용할 수 있습니다.ASP.NET C# Global_asax의 Application_Error가 세션 변수에 액세스 할 수 없음

try 
{ 
    user_name = System.Web.HttpContext.Current.Session["User_Name"].ToString(); 
    user_number = System.Convert.ToInt32(System.Web.HttpContext.Current.Session["User_Number"].ToString()); 
} 
catch (Exception ex) 
{ 
    user_number = 0; 
    user_name = "N/A";  
} 

모든 도움을 주시면 감사하겠습니다. 감사합니다.

답변

0

이렇게하면됩니다. 사용자는 책갈피를 통해 또는 URL을 알면 어느 페이지로든 이동할 수 있습니다. 따라서 값을 설정하기 전에 사용자가 페이지를 검색 할 수 있습니다. 따라서 코드가 손상되지 않도록해야합니다.

if (null != System.Web.HttpContext.Current.Session) 

이 시도-catch 블록보다 더 "수술"이 될 것입니다하지만 당신이 무슨 일을하는지 아무 문제가 없습니다

4

.

세션이 AcquireRequestState 이벤트까지 초기화되지 않으므로이 시점 이전에 발생한 모든 오류에는 세션 변수를 사용할 수 없습니다.

+0

안녕하세요, 답변을 보내 주셔서 감사합니다. 현재 우리의 오류 로깅은 페이지 단위로 오류를 잡아 내고 사용자에게 알려주지 만 (바보 같은 생각입니다) 추적이 있으면 추적 정보에 세션 정보가 표시됩니다. 해당 정보를 application_error 이벤트로 가져 오는 방법이 있어야합니까? –

+2

다시 페이지를 사용할 수있게되기 전에 페이지 수명주기의 포인트를 포함하여 언제든지 오류가 발생할 수 있습니다. 세션을 null로 설정할 수있는 규칙은 없습니다. 따라서이 검사를 수행하는 것이 현명하고 신중해야합니다. – harpo

관련 문제