Web Debug & Trace Bit 18th Choi Yong-Ho 1
List Debug & Trace I Web Debug II Trace III Show IV
Debug & Trace 코드의 실행을 설명하는 메시지들을 출력하기 위해 사용될 수 있음 데이터의 불일치 추적 흐름 감시 상태 파악 분석 정보를 취합
Web Debug Debug설정은 웹 사이트 관리도구 또는 Web.config에서 설정 가능 디버그 정보는 어셈블리를 불필요하게 무겁게 하고, 느리게 반응하게 만들기 때문에 사이트가 실제로 배포되는 경우에는 디버그 사용을 해제해주는것이 바람직
Trace 응용 프로그램의 실행 흐름을 추적 Web Form 수명 주기의 중요 시점에서 데이터를 표시 응용 프로그램의 다른 구성 요소와 Web Forms이 상호 작용하는 방식을 확인 응용 프로그램에 제출된 HTTP 요청 매개 변수, 특정 Web Form의 뷰 상태에 저장되는 메모리의 양 및 기타 유용한 프로파일링 정보 등을 검사할 수 있음
Trace
Trace 응용프로그램 상의 추적을 가능하게함 출력을 페이지에 나타내도록 함 모든 요청을 할 경우 다른 사용자들도 해당 페이지를 추적할 수 있게 함 Web.config 파일에 <deployment retail=true>를 설정하면 추적이 해제
Trace Trace.axd 한번 추적이 응용프로그램에 대해 활성화 되면, 각 페이지 요청은 모든 특정 페이지에 대한 추적 정보를 뷰어에게 전송
Page 생명주기 페이지요청 시작 페이지초기화 로드 유효성검사 Postback 이벤트처리 렌더링 언로드 1. 페이지 요청 페이지 요청은 페이지 수명 주기가 시작되기 전에 발생한다. 사용자가 페이지를 요청하면 ASP.NET에서는 페이지를 구문 분석하고 컴파일하여 페이지 주기를 시작할 지의 여부 또는 페이지를 실행하지 않고 캐쉬된 버전의 페이지를 응답으로 보낼 수 있는 지의 여부를 결정한다. 2. 시작 시작 단계 에서는 Request와 Response 같은 페이지 속성이 설정된다. 이 단계에서 페이지는 요청이 Postback인지 아니면 새 요청인지를 확인하여 IsPostBack 속성을 설정하게 된다. 3. 페이지 초기화 페이지 초기화 단계에서는 페이지의 컨트롤을 사용할 수 있으며, 각 컨트롤의 UniqueID속성이 설정된다. 또한 테마가 페이지에 적용되는 단계이다. 단 현재의 요청이 Postback인 경우에는 PostBack Data가 아직 로드되지 않았고 컨트롤 속성값이 뷰 상태의 값으로 복원되지 않은 상태이다. 4. 로드 로드 단계에서는 현재 요청이 Postback인 경우 뷰 상태 및 컨트롤 상태에서 복구된 정보와 함께 컴트롤 속성이 로드 되는 단계이다. 5. 유효성 검사 유효성 검사 단계는 모든 유효성 검사가 컨트롤의 Validate 메서드가 호출되어 각 유효성 검사기 컨트롤 및 페이지의 IsValid속성을 설정한다. 6. PostBack 이벤트 처리 요청이 PostBack인 경우 이벤트 처리기가 호출된다. 7. 렌더링 렌더링에 앞서 페이지와 모든 컨트롤에 대한 뷰 상태가 저장된다. 렌더링 단계를 진행하는 동안 페이지에서 각 컨트롤에 대한 Render 메서드를 호출하여 해당 출력을 페이지 Response속성의 OutputStream에 쓰는 텍스트 작성기를 제공하게 된다. 8. 언로드 페이지가 완전히 렌더링 되어 클라이언트에 전달되고 삭제할 준비가 되면 업로드가 호출된다. 이 단계에서는 Response와 Request같은 페이지 속성이 언로드 되고 정리작업이 수행된다. MSDN : http://msdn.microsoft.com/ko-kr/library/ms178472.aspx 렌더링 언로드
Trace - 요청정보 요청한 페이지의 일반적인 정보를 나타냄 상태코드 설명 200 Ok 301 Moved Permanently 304 Not Modified 307 Temporary Redirect 400 Bad Request 401 Unauthorized 403 Forbidden 404 Not Found 408 Request Time-out 500 Internal Server Error
최초 메시지가 출력된 시점부터 현재까지 걸린 시간(초) 이전 메시지가 출력된 시점부터 현재까지 걸린 시간(초)
Trace Page.PreInit 페이지 초기화가 시작될 때 발생하는 이벤트. 이벤트 다음에 개인설정 정보 및 페이지 테마가 로드 됨. Page_Init 1. PreInit 이 이벤트는 IsPostBack 속성을 검사하여 페이지가 처음으로 처리되는 것인지의 여부를 확인합니다. 또한 동적 컨트롤을 만들고 마스터 페이지를 동적으로 설정합니다. 페이지의 수명주기로 봤을때 “시작” 단계를 포함하여 “초기화”의 초입단계라 할 수 있습니다. 주의 하실 점은 요청이 포스트백인 경우에는 컨트롤의 값이 뷰상태에서 아직 복원되지 않았기 때문에 현 단계에선 컨트롤 속성을 설정하게 되면 다음 이벤트인 Init이벤트에서 속성값이 덮어쓰여질 수 있습니다. 2. Init Init 이벤트는 페이지의 모든 컨트롤을 초기화하고 모든 스킨 설정을 적용한 뒤에 발생합니다. 이 이벤트를 사용하여 컨트롤 속성을 읽거나 초기화 할 수 있습니다. 이 이벤트 동안에 컨트롤들의 값을 초기화하거나, 이벤트들을 매핑.
Trace Page.InitComplete 페이지 초기화가 완료될 때 발생하는 이벤트. 페이지에서 선언된 모든 컨트롤이 초기화 되지만 페이지의 상태는 아직 채워지지 않은 상태. 서버 컨트롤에 액세스할 수는 있지만 사용자가 반환한 정보는 아직 포함되지 않은 상태. 3. InitComplete 이 이벤트는 Page 개체를 통해서 발생합니다. 이 이벤트를 사용하여 모든 초기화를 완료해야 할 작업을 처리할 수 있습니다.
Trace Page.PreLoad Load이벤트가 발생하기 전에 발생되는 이벤트. Page_Load 이 이벤트는 Load 이벤트 이전에 페이지나 커트롤을 처리해야 할 경우에 사용됩니다. Page에서 이 이벤트가 발생한 후에 해당 페이지와 모든 컨트롤에 대한 뷰 상태를 로드하고 Request 인스턴스에 포함된 모든 포스트백 데이터를 처리하게 됩니다. 5. Load Page에서 Page에 대해 OnLoad 이벤트 메서드를 호출한 다음 자식 컨트롤 각각에 대해 동일한 과정을 되풀이 합니다. 이 과정이 페이지와 모든 컨트롤을 로드할때까지 해당 자식 컨트롤 각각에 대해 동일하게 진행됩니다. OnLoad 이벤트 메서드를 사용하면 컨트롤의 속성을 설정하고 데이터베이스 연결을 설정할 수 있습니다. 페이지가 실질적으로 로드되는 시점에 발생하는 이벤트. 이벤트 동안에 ASP.NET 페이지를 만들며, 이벤트에 응답하는 작업들을 수행할 수 있다.
이벤트 발생 Control Event 6. 컨트롤 이벤트 Button의 Click이벤트나 TextBox의 TextChanged 이벤트 같은 특정 컨트롤에 대한 이벤트를 처리할 수 있습니다.
Trace Page.LoadComplete Load 이후 발생되는 이벤트. 포스트백 된 데이터와 뷰 상태 데이터가 페이지와 페이지에 있는 컨트롤에 로드된 후에 발생. Page_PreRender 7. LoadComplete 이 이벤트는 페이지의 다른 모든 컨트롤을 로드해야 하는 작업에 대해 사용됩니다. 8. PreRender 이 이벤트가 발생하기 전에 데이터 바인딩 이벤트가 발생되며, 이 이벤트를 사용하여 페이지나 해당 컨트롤의 내용을 최종적으로 변경할 수 있습니다. 컨트롤이 렌더링 되기 직전에 발생되는 이벤트.
Trace Page.PreRenderComplete 페이지 내용이 렌더링 되기 전에 발생되는 이벤트. 모든 컨트롤이 만들어지고, 필요한 페이지 매김이 완료되어 페이지가 출력 스트림으로 렌더링 될 준비상태. 페이지의 뷰 상태가 저장되기 전에 발생되는 마지막 이벤트. Page.SaveStateComplete 9. SaveStateComplete 이 이벤트가 발생하기 전에 페이지와 모든 컨트롤에 대해 ViewState가 저장됩니다. 이 시점에서 페이지나 컨트롤에 대한 변경 내용은 모두 무시됩니다. 이 이벤트를 사용하여 뷰 상태 저장이 필요한 작업을 수행할 수는 있지만 컨트롤을 변경할 수는 없습니다. 모든 뷰 상태 및 컨트롤 상태 정보가 저장된 후 발생되는 이벤트. 페이지가 요청브라우저로 렌더링 되기 전에 발생되는 마지막 이벤트.
Trace Page.Render HtmlTextWriter 개체를 초기화하고 렌더링 할 페이지의 자식 컨트롤을 호출. 클라이언트 브라우저로 보내지는 텍스트와 태그 작성. -RenderChildren을 호출하여 페이지에 들어있는 컨트롤의 텍스트와 태그를 작성. 10. Render Render는 이벤트가 아니다. 대신 이 처리 단계에서 Page개체가 각 컨트롤에 대해 이 메서드를 호출하게 됩니다. 모든 ASP.NET 웹 서버 컨트롤에는 브라우저에 보내는 컨트롤의 태그를 작성하는 Render 메서드가 있습니다. 사용자 지정 컨트롤을 만드는 경우 일반적으로 이 메서드를 재정의 하여 컨트롤의 태그를 출력합니다. 단, 사용자지정 컨트롤에 표준 ASP.NET 웹 서버 컨트롤만 포함되어 있고 사용자 지정 태그는 포함되지 않는 경우라면 Render 메서드를 재정의할 필요는 없습니다. 11. Unload 이 이벤트는 각 컨트롤에 대해 발생한 다음 Page 개체에 대해 발생합니다. 컨트롤에서 이 이벤트를 사용하면 컨트롤 별로 특정한 최종 정리 작업을 수행할 수 있습니다. 페이지 자체에 대해 이 이벤트를 사용하면 로깅 등의 추가 마무리 작업을 수행할 수 있습니다.
THANK YOU 참고 동영상 : http://msdn.microsoft.com/ko-kr/beginner/bb308864.aspx