다음을 통해 공유


연습: Visual Web Developer에서 추적을 사용하여 웹 페이지 오류 찾기

업데이트: 2007년 11월

ASP.NET 웹 페이지에서 오류를 찾는 데는 여러 가지 방법이 있습니다. 여기에는 디버거와 추적 사용도 포함됩니다. 추적은 페이지 처리 중에 발생하는 작업에 대한 메시지를 표시하며 사용자가 표시하도록 선택한 정보를 포함할 수 있습니다. 또한 서버와 브라우저에서 교환 중인 데이터에 대한 정보를 제공합니다. 데이터 교환에는 컨트롤 세부 정보, 서버 변수, 사용자 이름, 쿠키 등이 포함됩니다. 이 연습에서는 추적 사용 방법을 설명합니다.

추적은 디버거 사용이 불가능하거나 바람직하지 않을 때 유용합니다. 예를 들어, 페이지가 원격 서버에 있을 경우 디버거를 사용할 수 없습니다. 또한 추적을 사용하면 HTTP 헤더와 같이 디버거에서 명시적으로 사용할 수 없는 정보를 편리하게 볼 수 있습니다. 디버깅에 대한 자세한 내용은 연습: Visual Web Developer에서 웹 페이지 디버깅을 참조하십시오.

이 연습에서는 추적 작업을 수행합니다. 사용자 이름을 확인한 다음 해당 이름을 표시하는 웹 페이지를 만듭니다. 또한 이 페이지는 사용자가 이름을 다시 입력할 필요가 없도록 이름을 쿠키에 저장합니다.

참고:

프로덕션 응용 프로그램에서 개인 정보를 저장하려면 ASP.NET 프로필 속성을 사용하는 것이 더 좋습니다. 자세한 내용은 ASP.NET 프로필 속성 개요를 참조하십시오. 그러나 이 연습에서 쿠키를 사용하면 코드가 간단해지므로 추적에 중점을 둘 수 있습니다.

이 연습에서는 의도적으로 몇 가지 오류를 발생시킨 다음 추적을 사용하여 페이지 처리 상태를 확인합니다. 이 정보는 오류 진단에 도움이 됩니다.

이 연습에서 수행할 작업은 다음과 같습니다.

  • 단일 페이지에 대해 추적 설정

  • 추적 출력 읽기

  • 사용자 지정 추적 정보 표시

  • 다른 추적 창에서 추적 정보 보기

  • 사용자 지정 추적 출력 만들기

사전 요구 사항

이 연습을 완료하려면 다음과 같은 요건을 갖추어야 합니다.

  • Microsoft Visual Web Developer 웹 개발 도구

  • .NET Framework

이 연습에서는 Visual Web Developer 작업에 대한 일반적인 지식이 있다고 가정합니다. Visual Web Developer에 대한 개요는 연습: Visual Web Developer에서 기본 웹 페이지 만들기를 참조하십시오.

웹 사이트 만들기

연습: Visual Web Developer에서 기본 웹 페이지 만들기를 완료하여 Visual Web Developer에서 웹 사이트를 이미 만들었으면 해당 웹 사이트를 사용하고 이 연습의 뒷부분에 있는 "컨트롤 추가"로 이동할 수 있습니다. 그렇지 않으면, 다음 단계를 따라 새 웹 사이트와 페이지를 만듭니다.

참고:

이 연습에서는 코드 숨김 파일을 코드로 사용하는 ASP.NET 페이지에서 작업한다고 가정합니다.

파일 시스템 웹 사이트를 만들려면

  1. Visual Web Developer를 엽니다.

  2. 파일 메뉴에서 새웹 사이트를 클릭합니다.

    새 웹 사이트 대화 상자가 나타납니다.

  3. Visual Studio에 설치되어 있는 템플릿에서 ASP.NET 웹 사이트를 클릭합니다.

  4. 맨 오른쪽 위치 상자에 웹 사이트의 페이지를 보관할 폴더의 이름을 입력합니다.

    예를 들어, 폴더 이름 C:\WebSites를 입력합니다.

  5. 언어 목록에서 작업할 프로그래밍 언어를 클릭합니다.

  6. 확인을 클릭합니다.

    Visual Web Developer에서 해당 폴더와 Default.aspx라는 새 페이지를 만듭니다.

페이지 추가

기존 웹 사이트를 사용하는 경우 새 페이지를 만들 수 있습니다. 이 연습에 사용할 수 있는 페이지가 이미 있으면 다음 단원으로 이동합니다.

새 페이지를 만들려면

  1. 솔루션 탐색기에서 웹 사이트 이름을 마우스 오른쪽 단추로 클릭한 다음 새 항목 추가를 클릭합니다.

  2. 새 항목 추가 - <Path> 대화 상자의 Visual Studio에 설치되어 있는 템플릿에서 Web Form을 클릭합니다.

  3. 이름 상자에 FirstWebPage.aspx를 입력합니다.

  4. 언어 목록에서 작업할 프로그래밍 언어를 클릭합니다.

  5. Visual Basic이나 C#으로 페이지를 만드는 경우 다른 파일에 코드 입력 확인란을 선택합니다.

  6. 추가를 클릭합니다.

컨트롤 추가

웹 사이트를 만들고 페이지를 연 후 다음 단계에서는 페이지에 일부 컨트롤을 추가합니다.

디버깅을 위한 컨트롤과 코드를 추가하려면

  • 디자인 뷰로 전환한 다음 도구 상자의 표준 그룹에서 다음 컨트롤을 페이지로 끌어와 표에 설명된 대로 속성을 설정합니다.

    • 컨트롤

    • 속성

    TextBox

    ID: textName

    Text: (비어 있음)

    Button

    ID: buttonDisplayName

    Text: Submit

    Label

    ID: labelName

    Text: (비어 있음)

    참고:

    이 연습에서 페이지의 레이아웃은 중요하지 않습니다.

코드 추가

다음 단계에서는 페이지에 코드를 추가합니다. 페이지가 올바로 실행 중이면 사용자가 이름을 입력한 다음 Submit을 클릭할 수 있습니다. 이렇게 하면 Label 컨트롤에 해당 이름이 표시됩니다. 사용자가 브라우저를 닫고 페이지로 돌아가면 사용자 이름이 쿠키에 저장되었으므로 이미 페이지에 표시되어 있습니다.

다음 단계에서는 코드 추가 방법을 설명합니다. 여기에 설명된 코드 추가 절차나 코드 자체가 완전히 올바른 것은 아닙니다. 이것은 의도적인 것으로 추적을 사용하여 페이지에서 오류를 찾을 수 있습니다.

코드를 추가하려면

  1. 솔루션 탐색기에서 FirstWebPage.aspx를 마우스 오른쪽 단추로 클릭한 다음 코드 보기를 클릭합니다.

    참고:

    디자인 뷰에서 단추를 두 번 클릭하지 마십시오.

  2. 클래스 정의 내에 다음 코드를 입력합니다.

    참고:

    단일 파일 페이지에서 작업하는 경우 <script> 블록에 코드를 붙여 넣습니다.

    Protected Sub buttonDisplayName_Click(ByVal sender As Object, _
          ByVal e As EventArgs)
       labelName.Text = Server.HtmlEncode(textName.Text)
       Response.Cookies("username").Value = labelName.Text
    End Sub
    
    protected void buttonDisplayName_Click(Object sender, EventArgs e)
    {
        labelName.Text = Server.HtmlEncode(textName.Text);
        Response.Cookies["username"].Value = labelName.Text;
    }
    

    이 코드는 다음 작업을 수행합니다.

    • TextBox 컨트롤의 값을 읽은 다음 Label 컨트롤에 값을 표시합니다. 이 논리의 일부로 코드는 오른쪽 꺾쇠괄호(<)와 같은 잠재적으로 실행 가능한 HTML 문자를 동등한 표시 요소로 바꾸는 HtmlEncode 메서드를 호출합니다. 이는 스크립트 악용을 방지하기 위한 보안 조치입니다. 자세한 내용은 스크립트 악용을 참조하십시오.

    • 사용자가 입력한 값을 저장하는 username이라는 쿠키를 만듭니다.

  3. 이전 단계에서 만든 Click 처리기 위나 아래에 다음 메서드를 추가합니다.

    Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) _
            Handles Me.Load
       If Not Request.Cookies("username") Is Nothing Then
          labelName.Text = Request.Cookies("username").Value
       End If
    End Sub
    
    void Page_Load(Object sender, EventArgs e)
    {
        if(Request.Cookies["username"] != null)
        {
            labelName.Text = Request.Cookies["username"].Value;
        }
    }
    

페이지 테스트

이제 페이지를 테스트할 수 있습니다. 이전 단원의 절차에서 의도적으로 불완전한 단계를 따른 경우 아직 페이지가 지정한 대로 작동하지 않습니다.

페이지를 테스트하려면

  1. Ctrl+F5를 눌러 페이지를 실행합니다.

  2. 페이지가 나타나면 텍스트 상자에 이름을 입력한 다음 Submit을 클릭합니다.

    Submit을 클릭하여 페이지를 다시 서버로 게시해도 이름이 표시되지 않습니다.

  3. 브라우저를 닫습니다.

이제 추적을 사용하여 페이지에서 오류를 찾을 수 있습니다.

추적을 사용하여 오류 찾기

이 단원에서는 페이지에 대해 추적을 설정합니다. 추적 출력을 검사한 다음 페이지 오류를 찾는 데 도움이 되는 사용자 지정 추적 메시지를 추가합니다.

페이지에 대해 추적을 설정하려면

  1. FirstWebPage.aspx 페이지를 열고 디자인 뷰로 전환합니다.

  2. 속성 목록에서 DOCUMENT를 클릭합니다.

    페이지에 대한 속성이 표시됩니다.

  3. Trace를 true로 설정합니다.

    추적 설정은 실제로 @ Page 지시문의 일부로 지정됩니다. 소스 뷰로 전환한 다음 페이지의 첫 줄에서 이를 확인할 수 있습니다. @ Page 지시문은 다음과 같이 표시됩니다.

    <%@ Page language="VB"      Trace="true" %>
    
    <%@ Page language="C#"      Trace="true" %>
    
  4. Ctrl+F5를 눌러 페이지를 실행합니다.

    페이지가 브라우저에 표시됩니다. 페이지에 배치한 텍스트와 컨트롤이 맨 위에 표시됩니다. 텍스트와 컨트롤 아래에는 페이지 처리에 대한 많은 세부 정보를 보여 주고 다음 정보를 포함하는 추적 출력이 표시됩니다.

    • 페이지를 실행하는 동안 발생한 페이지 이벤트 시퀀스

    • 페이지에 있는 컨트롤의 유형, 이름 및 크기

    • 쿠키 및 해당 내용

    • 브라우저에서 서버로 보내는 모든 정보의 컬렉션인 서버 변수

    요청 정보(추적 정보의 첫 번째 블록) 아래에 요청 유형GET으로 표시됩니다. 이는 페이지를 처음으로 실행한 것이며 포스트백이 아님을 나타냅니다.

  5. 상자에 이름을 입력한 다음 Submit을 클릭합니다.

    이제 요청 유형POST가 됩니다. 이는 페이지가 포스트백임을 나타냅니다. Submit을 클릭해도 이름이 표시되지 않습니다.

  6. 브라우저를 닫습니다.

사용자 지정 추적 출력을 사용하여 편리하게 페이지의 논리를 따를 수 있습니다.

사용자 지정 추적 출력을 추가하려면

  1. 이 연습의 앞부분에 있는 "코드 추가"에서 만든 buttonDisplayName_Click 처리기에 강조 표시된 다음 줄을 추가합니다.

    Protected Sub buttonDisplayName_Click(ByVal sender As Object, _
          ByVal e As EventArgs)
       Trace.Warn("debugging", "Start buttonDisplayName Click handler")
       labelName.Text = Server.HtmlEncode(textName.Text)
       Response.Cookies("username").Value = labelName.Text
       Trace.Warn("debugging", "End buttonDisplayName Click handler")
    End Sub
    
    protected void buttonDisplayName_Click(Object sender, EventArgs e)
    {
       Trace.Warn("debugging", "Start buttonDisplayName Click handler");
       labelName.Text = Server.HtmlEncode(textName.Text);
       Response.Cookies["username"].Value = labelName.Text;
       Trace.Warn("debugging", "End buttonDisplayName Click handler");
    }
    

    Warn 메서드는 추적 출력에 사용자 지정 메시지를 추가합니다. TraceContext 클래스는 Write 메서드도 제공하지만 출력이 색으로 구분되는 Warn 메서드가 더 유용합니다.

  2. Ctrl+F5를 눌러 페이지를 실행합니다.

  3. Submit을 클릭합니다.

    추적 출력을 검사해 보면 출력에 빨간색 텍스트가 포함되어 있지 않습니다. 따라서 Submit에 대한 Click 처리기가 호출되지 않았다는 결론을 내릴 수 있습니다.

    처리기가 호출되지 않는 가장 일반적인 이유는 컨트롤이 이벤트 처리기에 올바로 바인딩되지 않았기 때문입니다. 이 경우에도 마찬가지로, 오류 처리 코드를 추가했지만 Submit에 대한 Click 이벤트를 처리기에 바인딩하지 않았습니다. 일반적으로 Visual Web Developer는 디자인 뷰에서 컨트롤을 두 번 클릭할 때 이벤트를 컨트롤에 바인딩합니다.

  4. 브라우저를 닫습니다.

  5. 소스 뷰에서 강조 표시된 다음 특성을 <asp:button> 요소에 추가합니다.

    <asp:button id="buttonDisplayName"  text="Submit"
        onclick="buttonDisplayName_Click" />
    
  6. Ctrl+F5를 눌러 페이지를 실행합니다.

  7. 상자에 이름을 입력한 다음 Submit을 클릭합니다.

    페이지가 통과한 처리 단계를 나열하는 추적 정보 섹션에서 사용자 지정 추적 출력은 빨간색으로 나타납니다.

    이 섹션의 출력은 페이지 처리 중에 메시지가 발생한 순서대로 메시지를 표시합니다. Begin Raise PostBackEvent 줄과 End Raise PostBackEvent 줄 사이에 처리되는 Click 이벤트 처리기에 메시지를 추가했습니다. 사용자 지정 메시지를 추가하면 처리기가 호출되었다는 것은 물론 페이지 처리 주기에서 코드가 실행된 위치를 알 수 있습니다.

    사용자 지정 메시지 옆의 범주는 Warn 메서드를 호출할 때 지정한 범주인 debugging입니다. 원하는 대로 범주를 지정할 수 있으며, 필요한 경우 추적 출력에서 해당 범주를 쉽게 찾을 수 있도록 페이지의 TraceMode 속성을 SortByCategory 값으로 설정할 수 있습니다.

    또한 입력한 이름이 레이블에 표시됩니다.

Submit에 대한 Click 처리기가 제대로 작동하므로 이제 쿠키를 포함하여 페이지의 나머지 코드를 테스트할 수 있습니다.

쿠키를 테스트하려면

  1. 브라우저를 닫습니다.

  2. Ctrl+F5를 눌러 페이지를 실행합니다.

    Submit에 대한 Click 처리기가 쿠키를 설정하고 Page_Load 처리기가 다음에 포스트백을 수행하는 동안 쿠키를 읽기 때문에 예상 동작은 입력한 이름이 레이블에 자동으로 나타나는 것입니다. 그러나 레이블이 쿠키에서 설정되지 않습니다.

    쿠키를 작성해도 저장되지 않는 경우 이 오류는 일반적으로 쿠키에 대한 명시적 만료 날짜를 설정하지 않았기 때문입니다. 만료 날짜가 없는 쿠키는 세션 쿠키입니다. 세션 쿠키는 브라우저를 닫을 때까지만 서버 메모리에 유지됩니다. 즉, 쿠키가 브라우저에 기록되지 않습니다. 다음 단계에서 이 문제를 수정합니다.

  3. 브라우저를 닫습니다.

  4. 소스 뷰에서 강조 표시된 다음 줄을 buttonDisplayName_Click 처리기에 추가합니다.

    Protected Sub buttonDisplayName_Click(ByVal sender As Object, _
            ByVal e As EventArgs)
        Trace.Warn("debugging", "Start buttonDisplayName Click handler")
        labelName.Text = Server.HtmlEncode(textName.Text)
        Response.Cookies("username").Value = labelName.Text
        Response.Cookies("username").Expires= _       DateTime.Now.AddMinutes(30)
       Trace.Warn("debugging", "End buttonDisplayName Click handler")
    End Sub
    
    protected void buttonDisplayName_Click(Object sender, EventArgs e)
    {
        Trace.Warn("debugging", 
            "Start buttonDisplayName Click handler");
        labelName.Text = Server.HtmlEncode(textName.Text);
        Response.Cookies["username"].Value = labelName.Text;
        Response.Cookies["username"].Expires=         DateTime.Now.AddMinutes(30);
        Trace.Warn("debugging", "End buttonDisplayName Click handler");
    }
    

    새 줄에서는 쿠키가 30분 후에 만료되도록 명시적으로 설정합니다.

  5. Ctrl+F5를 눌러 페이지를 실행합니다.

  6. 상자에 이름을 입력한 다음 Submit을 클릭합니다.

    해당 이름이 브라우저에 표시됩니다. 요청 쿠키 컬렉션 추적 출력에서 쿠키가 설정되고 있음을 확인할 수 있습니다.

  7. 브라우저를 닫습니다.

  8. Ctrl+F5를 눌러 페이지를 실행합니다.

    이번에는 이름이 자동으로 채워집니다. 이제 요청 쿠키 컬렉션 추적 출력에서 브라우저가 쿠키를 페이지로 전달하고 있음을 확인할 수 있습니다.

추적 뷰어 창에 추적 정보 표시

단일 페이지에서만 작업할 때는 페이지에 추적 출력을 표시하도록 설정하는 것이 유용합니다. 그러나 응용 프로그램에서 많은 페이지로 작업하는 경우 각 페이지에 대해 추적을 설정하고 해제하는 것이 불편할 수 있습니다. 더욱이 페이지를 실행 중일 때 페이지에 추적 출력 정보를 표시하면 방해가 될 수 있습니다. 이와 관계없이 페이지에서 응용 프로그램의 사용자에게 추적 출력을 표시하지 않습니다.

페이지 수준은 물론 응용 프로그램 수준에서 추적을 구성할 수 있습니다. 응용 프로그램 수준 추적을 설정하면 다음 두 가지 이점이 있습니다.

  • 동시에 모든 페이지에 대해 추적을 설정하고 해제할 수 있습니다.

  • 페이지 출력의 일부로 표시하는 대신 다른 브라우저 창(추적 뷰어)에 추적 출력을 표시할 수 있습니다.

응용 프로그램 수준 추적을 설정하면 ASP.NET은 모든 페이지의 추적 출력을 캐시에서 유지 관리합니다. 캐시에 저장할 추적 출력의 페이지 수와 최근 항목이나 가장 오래된 항목을 유지할지 여부를 지정하는 옵션을 설정할 수 있습니다. 그런 다음 브라우저에서 추적 뷰어를 호출하고 검사할 추적 출력을 선택할 수 있습니다.

이 연습 단원에서는 응용 프로그램 수준 추적을 설정하고 추적 뷰어를 사용하여 추적 출력을 검사합니다.

응용 프로그램 수준 추적을 설정하려면

  1. 소스 뷰로 전환한 다음 페이지 맨 위의 @ Page 지시문에서 Trace="true"를 삭제합니다.

    참고:

    특성을 단순히 false로 설정하지 말고 제거하십시오. 그렇지 않으면 이 연습의 이후 단계가 제대로 작동하지 않습니다.

  2. 웹 사이트 메뉴에서 ASP.NET 구성을 클릭합니다.

    ASP.NET 웹 사이트 관리 도구가 나타납니다.

  3. 응용 프로그램 구성을 클릭합니다.

  4. 디버깅 및 추적에서 디버깅 및 추적 구성을 클릭한 다음 추적 정보 캡처 확인란을 선택합니다.

    이 설정은 응용 프로그램 수준 추적을 설정합니다.

    이 연습에서는 나머지 설정을 기본값으로 그대로 둡니다. ASP.NET은 최대 10개 항목의 추적 출력을 캐시하고(단일 페이지의 경우 10개의 포스트백 또는 여러 페이지의 경우 페이지당 이보다 적은 수의 포스트백) 최근 항목을 캐시합니다.

  5. ASP.NET 웹 사이트 관리 도구를 닫습니다.

이제 원래 페이지를 실행하고 사용자에게 표시되는 방식으로 작업할 수 있습니다. 그러나 이와 동시에 필요한 경우 다른 브라우저 창에서 추적 출력을 볼 수 있습니다.

다른 브라우저 창에서 추적 출력을 보려면

  1. Ctrl+F5를 눌러 페이지를 실행합니다.

    페이지에 더 이상 추적 출력이 표시되지 않습니다. 사용자에게 표시되는 대로 페이지가 나타납니다.

  2. 상자에 이름을 입력한 다음 Submit을 클릭하여 페이지가 제대로 작동하는지 확인합니다.

  3. 새 브라우저 창을 엽니다.

  4. 작업 중인 페이지 이름으로 trace.axd를 대체하여 브라우저의 주소 상자에 사이트의 URL을 입력합니다.

    예를 들어, 페이지의 URL이 다음과 같다고 가정합니다.

    https://localhost:8081/WebSite/Default.aspx
    

    다음을 입력합니다.

    https://localhost:8081/WebSite/trace.axd
    
    참고:

    이 작업을 수행하는 빠른 방법으로 원래 페이지에서 URL을 복사한 다음 페이지 이름만 변경할 수 있습니다.

    브라우저에 추적 엔트리의 현재 캐시가 표시됩니다.

  5. 마지막(최근) 추적 엔트리에 대해 자세히 보기를 클릭합니다.

    페이지 끝에 추가되지 않는다는 것만 제외하고 이 연습의 앞부분에서 표시된 것과 비슷한 추적 출력이 브라우저에 표시됩니다.

  6. 원래 페이지가 포함된 브라우저 인스턴스로 전환합니다.

  7. 상자에 새 이름을 입력한 다음 Submit을 클릭합니다.

    이 작업은 새 추적 로그 항목을 생성합니다.

  8. 해당 정보가 포함된 브라우저 인스턴스로 전환합니다.

  9. 브라우저에서 뒤로를 클릭하여 추적 항목 목록으로 돌아간 다음 새로 고침을 클릭하여 엔트리 목록을 업데이트합니다.

    7단계에서 만든 추적 출력을 나타내는 새 엔트리가 표시됩니다.

  10. 두 브라우저 창을 모두 닫습니다.

사용자 지정 추적 출력 만들기

추적 출력에는 많은 정보가 포함되어 있으며 필요한 것보다 정보가 많은 경우도 있습니다. 예를 들어, 추적 출력을 자신이 만든 추적 출력으로만 제한할 수 있습니다. 추적을 사용하면 추적 버퍼의 내용을 읽고 필요한 정보만 선택적으로 표시할 수 있습니다.

사용자 지정 추적 출력을 만들려면 Trace 개체에 대한 TraceFinished 이벤트를 처리합니다. 이벤트 처리기에서 추적 버퍼를 읽을 수 있습니다.

사용자 지정 추적 출력을 만들려면

  1. 작업 중인 페이지의 Page_Load 처리기에 강조 표시된 다음 코드를 추가합니다.

    Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
            Handles Me.Load
       If Not Request.Cookies("username")  Is Nothing Then
          labelName.Text = Request.Cookies("username").Value
       End If
       AddHandler Trace.TraceFinished, AddressOf Me.TraceFinished   If IsPostBack Then      Trace.Write("debugging", "Page_Load (Postback)")   Else      Trace.Write("debugging", "Page_Load (First Time)")   End If
    End Sub
    
    void Page_Load(object sender, EventArgs e)
    {
        if(Request.Cookies["username"].Value != null)
        {
            labelName.Text = Request.Cookies["username"].Value;
        }
        Trace.TraceFinished += new         TraceContextEventHandler(this.TraceFinished);    if (Page.IsPostBack)    {        Trace.Write("debugging", "Page load (postback)");    }    else    {        Trace.Write("debugging", "Page load (first time)");    }
    }
    

    이 코드는 다음 두 가지 기능을 수행합니다.

    • 페이지의 메서드를 Trace 개체에 대한 TraceFinished 이벤트에 바인딩합니다. 이 이벤트는 페이지에 대한 추적 출력이 완료될 때 발생합니다. 메서드는 다음 단계에서 작성합니다.

    • 일부 추적 정보를 씁니다.

  2. 다음 메서드를 만들어 TraceFinished 이벤트를 처리합니다.

    Sub TraceFinished(ByVal sender As Object, _
           ByVal e As TraceContextEventArgs)
       Dim traceRecord As TraceContextRecord
       For Each traceRecord In e.TraceRecords
          If traceRecord.Category = "debugging" Then
             Response.Write("<BR>" & traceRecord.Message)
          End If
       Next
    End Sub
    
    void TraceFinished(object sender, TraceContextEventArgs e)
    {    
        foreach(TraceContextRecord traceRecord in e.TraceRecords)
        {    
               if(traceRecord.Category == "debugging")    
               {        
                   Response.Write("<br>" + traceRecord.Message);
               }    
        }    
    }
    

    이 코드는 추적 출력이 완료될 때 실행됩니다. 추적 버퍼는 e 이벤트 인수의 TraceRecords 속성에서 컬렉션으로 사용할 수 있습니다. 이 코드는 컬렉션을 반복하여 해당 범주가 debugging인 모든 추적 레코드의 값을 표시합니다. 이 연습에서는 모든 사용자 지정 추적 출력의 범주를 debugging으로 설정했습니다.

이 연습 단계에서 웹 사이트는 모든 페이지에 대해 추적을 설정하도록 구성되었지만 추적 출력이 페이지 대신 추적 뷰어로 전송됩니다. 웹 사이트를 다르게 구성한 경우, 예를 들어 추적 출력이 페이지에 표시되면 이 연습의 앞부분에 있는 "트리 뷰어 창에 추적 정보 표시"에서 응용 프로그램 수준 추적을 설정하려면 절차 단계를 따릅니다.

이제 사용자 지정 추적 출력을 테스트할 수 있습니다.

사용자 지정 추적 출력을 테스트하려면

  1. Ctrl+F5를 눌러 페이지를 실행합니다.

    페이지가 브라우저에 표시되면 **페이지 로드(처음)**라는 메시지만 나타나고 다른 추적 출력은 나타나지 않습니다.

  2. Submit을 클릭합니다.

    페이지 로드(포스트백), buttonDisplayName Click 처리기 시작buttonDisplayName Click 처리기 끝내기 메시지가 나타납니다.

참고:

trace 요소(ASP.NET 설정 스키마)의 requestLimit 특성에 지정한 캐시된 요청 수를 초과하면 TraceFinished 이벤트가 발생하지 않으며 웹 페이지에 메시지가 표시되지 않습니다.

다음 단계

이 연습에서는 ASP.NET 추적의 기본 기능에 대해 설명했습니다. 추적을 사용하여 웹 응용 프로그램 내에 정보를 표시하는 것 외에도 ASP.NET 추적을 다른 계측과 통합할 수 있습니다. 예를 들어, 다음과 같은 작업을 할 수 있습니다.

참고 항목

기타 리소스

ASP.NET 웹 페이지의 추적(Visual Studio)