Asp.Net 페이지 수준 추적, 디버깅, 오류 처리 [예]

어떤 애플리케이션이든 개발 과정에서 오류가 발생하기 마련입니다. 초기 단계에서 오류를 발견하는 것이 중요합니다.

Visual Studio에서는 ASP.Net 애플리케이션에 대해 이를 수행할 수 있습니다. Visual Studio는 디버깅에 사용되며 ASP.Net에 대한 오류 처리 기술이 있습니다.

ASP.NET에서 디버깅이란 무엇입니까?

디버깅은 애플리케이션에 중단점을 추가하는 프로세스입니다. 이러한 중단점은 실행 중인 프로그램의 실행을 일시 중지하는 데 사용됩니다. 이를 통해 개발자는 특정 시점에 프로그램에서 무슨 일이 일어나고 있는지 이해할 수 있습니다.

프로그램의 예를 들어보겠습니다. 이 프로그램은 사용자에게 "We are debugging"이라는 문자열을 표시합니다. 애플리케이션을 실행할 때 어떤 이유에서인지 문자열이 표시되지 않는다고 가정해 보겠습니다. 문제를 식별하려면 중단점을 추가해야 합니다. 문자열을 표시하는 코드 줄에 중단점을 추가할 수 있습니다. 이 중단점은 프로그램 실행을 일시 중지합니다. 이 시점에서 프로그래머는 무엇이 잘못되었는지 확인할 수 있습니다. 프로그래머는 그에 따라 프로그램을 수정합니다.

여기 예제에서 우리는 이전 장에서 만든 'DemoApplication'을 사용할 것입니다. 다음 예제에서 우리는 다음을 볼 것입니다.

  • 데모 애플리케이션에 문자열을 표시하는 방법.
  • 애플리케이션에 중단점을 추가하는 방법
  • 이 중단점을 사용하여 애플리케이션을 디버깅하는 방법입니다.

ASP.NET에서 응용 프로그램을 디버깅하는 방법

다음은 ASP.Net에서 데모 애플리케이션을 만들고 중단점을 추가하고 디버그하는 단계입니다.

1단계) Visual Studio에서 응용 프로그램을 엽니다.
먼저 Visual Studio에서 웹 애플리케이션을 열었는지 확인합시다. DemoApplication이 Visual Studio에서 열려 있는지 확인합니다.

 ASP.NET에서 애플리케이션 디버그

2단계) 이제 Demo.aspx.cs 파일을 열고 아래 코드 줄을 추가합니다.

  • 문자열을 표시하기 위해 Response.Write 코드 줄을 추가하면 됩니다.
  • 따라서 애플리케이션이 실행되면 웹 브라우저에 "We are debug"라는 문자열이 표시되어야 합니다.

 ASP.NET에서 애플리케이션 디버그

namespace DemoApplication
{  
  public partial class Demo : System.Web.UI.Page  
		{  
		  protected void Page_Load(object sender, EventArgs e)  
		  {
		    Response.Write("We are debugging"); 
		  }
		}
}

3단계) ​​애플리케이션에 중단점 추가
중단점은 Visual Studio에서 프로그램 실행을 중지하려는 지점입니다.

 ASP.NET에서 애플리케이션 디버그

  1. 중단점을 추가하려면 중단점을 삽입하려는 열을 클릭해야 합니다. 따라서 우리의 경우 프로그램이 “Response.Write” 코드 줄에서 멈추기를 원합니다. 중단점을 추가하기 위해 명령을 추가할 필요가 없습니다. 중단점을 추가하려는 라인을 클릭하기만 하면 됩니다.
  2. 이 작업이 완료되면 코드가 빨간색으로 표시되는 것을 확인할 수 있습니다. 또한 코드 줄 옆 열에 빨간색 거품이 나타납니다.

노트: - 애플리케이션에 여러 중단점을 추가할 수 있습니다.

4단계) 디버깅 모드에서 애플리케이션 실행
이제 디버깅 모드를 사용하여 애플리케이션을 실행해야 합니다. Visual Studio에서 메뉴 옵션 디버그->디버깅 시작을 선택합니다.

 ASP.NET에서 애플리케이션 디버그

산출:-

 ASP.NET에서 애플리케이션 디버그

모든 단계를 올바르게 수행하면 프로그램 실행이 중단됩니다. Visual Studio는 중단점으로 이동하여 코드 줄을 노란색으로 표시합니다.

이제 프로그래머가 코드가 올바르지 않다고 느끼면 실행을 중지할 수 있습니다. 그런 다음 그에 따라 코드를 수정할 수 있습니다. 프로그램을 계속 진행하려면 프로그래머가 키보드의 F5 버튼을 클릭해야 합니다.

ASP.NET의 추적이란 무엇입니까?

애플리케이션 추적을 통해 요청한 페이지에 오류가 발생하는지 확인할 수 있습니다. 추적이 활성화되면 Trace.axd라는 추가 페이지가 애플리케이션에 추가됩니다. (아래 이미지 참조). 이 페이지는 신청서에 첨부되어 있습니다. 이 페이지에는 모든 요청과 해당 상태가 표시됩니다.

ASP.NET에서 추적

ASP.NET에서 응용 프로그램에 대한 추적을 활성화하는 방법

추적을 활성화하는 방법을 살펴보겠습니다. ASP.Net 애플리케이션:

단계 1) 'DemoApplication'을 작업해 보겠습니다. 솔루션 탐색기에서 web.config 파일을 엽니다.

 ASP.NET에서 응용 프로그램에 대한 추적 활성화

단계 2) Web.config 파일에 아래 코드 줄을 추가합니다.

추적 문은 애플리케이션에 대한 추적을 활성화하는 데 사용됩니다.

  • 추적 문의 'requestLimit'이 사용됩니다. 추적해야 하는 페이지 요청 수를 지정합니다.
  • 이 예에서는 40이라는 제한을 제공합니다. 값이 높을수록 애플리케이션 성능이 저하되므로 제한을 제공합니다.

ASP.NET에서 응용 프로그램에 대한 추적 활성화

<?xml version="1.0" encoding="utf-8"?>
<! --
For more information on how to configure your ASP.NET application, please visit http://go.microsoft.com/fwlink/?LinkId=169433 
-->
<configuration>
	<system.web>
		<compilation debug="true" targetFramework="4.0" />
		<httpRuntime targetFramework="4.0” />
		
		 <trace enable="true" pageOutput="false" requestLimit="40" localOnly="false"/>
		
	</system.web>
</configuration>

Visual Studio에서 "demoapplication"을 실행합니다.

산출:-

 ASP.NET에서 응용 프로그램에 대한 추적 활성화

이제 URL을 탐색하면 – http://localhost:53003/trace.axd , 각 요청에 대한 정보를 볼 수 있습니다. 여기서 애플리케이션에서 오류가 발생하는지 확인할 수 있습니다. 다음 유형의 정보는 위 페이지에 표시됩니다.

  1. 웹페이지 요청 시간입니다.
  2. 요청되는 웹페이지의 이름입니다.
  3. 웹 요청의 상태 코드입니다. (상태 코드 200은 요청이 성공했음을 의미합니다.)
  4. 웹 요청에 대한 자세한 내용을 볼 수 있는 View details. 이에 대한 예는 아래와 같습니다. 제공되는 중요한 자세한 정보 중 하나는 헤더 정보입니다. 이 정보는 각 웹 요청의 헤더에서 전송된 정보가 무엇인지 보여줍니다.

ASP.NET에서 응용 프로그램에 대한 추적 활성화

ASP.NET의 페이지 수준 추적

페이지 수준 추적 ASP.Net에서는 웹 페이지가 처리될 때 웹 페이지에 대한 모든 일반 정보를 표시합니다. 이는 어떤 이유로든 페이지가 작동하지 않을 때 디버깅하는 데 유용합니다. Visual Studio는 페이지의 다양한 측면에 대한 자세한 정보와 웹 요청에서 호출되는 각 메서드의 시간과 같은 정보를 제공합니다.

예를 들어, 웹 애플리케이션에 성능 문제가 있는 경우 이 정보는 문제를 디버깅하는 데 도움이 될 수 있습니다. 이 정보는 Visual Studio에서 애플리케이션을 실행할 때 표시됩니다.

ASP.NET의 페이지 수준에서 추적을 활성화하는 방법

ASP.Net 애플리케이션에 대해 페이지 수준 추적을 활성화하는 방법을 살펴보겠습니다.

단계 1) DemoApplication을 작업해 보겠습니다. 솔루션 탐색기에서 데모.aspx 파일을 엽니다.

ASP.NET의 페이지 수준 추적

단계 2) 페이지 추적을 활성화하려면 아래 코드 줄을 추가하세요. 페이지 선언에서 Trace=”true” 줄을 추가하면 됩니다. 이 코드 줄은 페이지 수준 추적을 허용합니다.

ASP.NET의 페이지 수준 추적

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Demo.aspx.cs" Inherits="DemoApplication.Demo" %>

	<!DOCTYPE html>
<html xmlns="http://www.w3.ore/1999/xhtml">
<head runat="server">
	<title></title>
</head>	
	<body>
	  <form id="form1" runat="server”>
	  </form>
</body>
</html>

Visual Studio에서 애플리케이션을 실행합니다.

산출:-

ASP.NET의 페이지 수준 추적

이제 웹 페이지 Demo.aspx가 표시되면 페이지에 대한 많은 정보를 얻을 수 있습니다. 페이지 수명 주기의 각 측면에 대한 시간과 같은 정보가 이 페이지에 표시됩니다.

오류 처리: 사용자 정의 오류 페이지 표시

In ASP.Net, 사용자 정의 오류 페이지를 사용자에게 표시할 수 있습니다. 애플리케이션에 어떤 종류의 오류가 있는 경우 사용자 정의 페이지가 사용자에게 이 오류를 표시합니다.

이 예에서는 먼저 HTML 페이지를 추가하겠습니다. 이 페이지에는 사용자에게 "문제를 조사 중입니다"라는 문자열이 표시됩니다. 그런 다음 오류 페이지가 표시되도록 데모.aspx 페이지에 일부 오류 코드를 추가합니다.

아래에 언급된 단계를 따르세요.

단계 1) DemoApplication을 작업해 보겠습니다. 애플리케이션에 HTML 페이지를 추가해 보겠습니다.

  1. 솔루션 탐색기에서 DemoApplication을 마우스 오른쪽 단추로 클릭합니다.
  2. 메뉴 옵션 '추가'->HTML 페이지를 선택합니다.

ASP.Net의 오류 처리

단계 2) 다음 단계에서는 새 HTML 페이지에 이름을 제공해야 합니다.

  1. 이름을 'ErrorPage'로 제공하세요.
  2. 계속하려면 '확인' 버튼을 클릭하세요.

ASP.Net의 오류 처리

단계 3) Errorpage가 Visual Studio에서 자동으로 열립니다. 솔루션 탐색기로 이동하면 파일이 추가된 것을 볼 수 있습니다.

ASP.Net의 오류 처리

HTML 페이지에 "문제를 조사 중입니다"라는 코드 줄을 추가합니다. web.config 파일을 변경하기 전에 HTML 파일을 닫을 필요가 없습니다.

ASP.Net의 오류 처리

<!DOCTYPE html>
<html xmlns="http://www.w3.ore/1999/xhtml">
<head runat="server">
	<title></title>
</head>	
	<body>
	  We are looking into the problem
	</body>
</html>

단계 4) 이제 web.config 파일을 변경해야 합니다. 이 변경은 애플리케이션에서 오류가 발생할 때마다 사용자 지정 오류 페이지를 표시해야 한다는 것을 알려줍니다.

'customErrors' 태그를 사용하면 사용자 정의 오류 페이지를 정의할 수 있습니다. defaultRedirect 속성은 이전 단계에서 생성된 사용자 정의 오류 페이지의 이름으로 설정됩니다.

ASP.Net의 오류 처리

<configuration>
	<system.web>
		<compilation debug="true" targetFramework="4.0" />
		<httpRuntime targetFramework="4.0” />
		
		 <customErrors mode="On" defaultRedirect="ErrorPage.html">
</customErrors>

		
	</system.web>
</configuration>

단계 5) 이제 demo.aspx.cs 페이지에 잘못된 코드를 추가해 보겠습니다. Solution Explorer에서 파일을 두 번 클릭하여 이 페이지를 엽니다.

ASP.Net의 오류 처리

Demo.aspx.cs 파일에 아래 코드를 추가합니다.

  • 이 코드 줄은 파일에서 텍스트 줄을 읽도록 설계되었습니다.
  • 해당 파일은 'Example.txt'라는 이름으로 D 드라이브에 위치할 것으로 추정됩니다.
  • 하지만 우리 상황에서는 이 파일이 실제로 존재하지 않습니다. 따라서 이 코드는 애플리케이션이 실행될 때 오류를 발생시킵니다.

ASP.Net의 오류 처리

namespace DemoApplication
{  

  public partial class Demo : System.Web.UI.Page  
		{  
		  protected void Page_Load(object sender, EventArgs e)  
		  {
		   String path = @"D:\Example.txt";
		   string[] lines;
		   lines = File.ReadAllLines(path);
		  }
		}
}

이제 코드를 실행해 보세요. 비주얼 스튜디오 그러면 아래 출력이 표시됩니다.

산출:-

ASP.Net의 오류 처리

위 페이지는 애플리케이션에서 오류가 발생했음을 보여줍니다. 결과적으로 Error.html 페이지가 사용자에게 표시됩니다.

ASP.NET 처리되지 않은 예외

최상의 시나리오에서도 예상치 못한 오류가 발생할 수 있습니다.

사용자가 애플리케이션에서 잘못된 페이지를 탐색한다고 가정해 보겠습니다. 이는 예측할 수 없는 일이다. 이러한 경우 ASP.Net은 사용자를 errorpage.html로 리디렉션할 수 있습니다.

이에 대한 예를 살펴보겠습니다.

  • Errorpage.html이 있는 동일한 'DemoApplication'을 사용할 것입니다.
  • 그리고 우리 애플리케이션에 존재하지 않는 웹 페이지를 보려고 시도할 것입니다.
  • 이 경우 ErrorPage.html 페이지로 리디렉션되어야 합니다. 이를 달성하기 위한 단계를 살펴보겠습니다.

단계 1) DemoApplication을 작업해 보겠습니다. 솔루션 탐색기에서 Global.asax.cs 파일을 엽니다.

ASP.NET 처리되지 않은 예외

주의사항: global.asax.cs 파일은 애플리케이션의 모든 페이지에 적용할 수 있는 코드를 추가하는 데 사용됩니다.

단계 2) global.asax.cs에 아래 코드 줄을 추가합니다. 이 줄은 오류를 확인하고 이에 따라 ErrorPage.html 페이지를 표시하는 데 사용됩니다.

ASP.NET 처리되지 않은 예외

namespace DemoApplication
{  

  public partial class Demo : System.Web.UI.Page  
		{  
		  protected void Application_Error(object sender, EventArgs e)  
		  {
		?    HttpException lastErrorWrapper = Server.GetLastError() as HttpException;

			if(lastErrorWrapper.GetHttpCode() == 404)
			Server.T ransfer("~/ErrorPage.html");
		  }
		}
}

코드 설명:-

  1. 첫 번째 줄은 Application_Error 이벤트 처리기입니다. 이 이벤트는 응용 프로그램에서 오류가 발생할 때마다 호출됩니다. 이벤트 이름은 'Application_Error'여야 합니다. 그리고 매개변수는 위와 같아야 합니다.
  2. 다음으로, HttpException 클래스 유형의 객체를 정의합니다. 이는 오류의 모든 세부 정보를 보유하는 표준 객체입니다. 그런 다음 Server.GetLastError 메서드를 사용하여 애플리케이션에서 발생한 마지막 오류의 모든 세부 정보를 가져옵니다.
  3. 그런 다음 마지막 오류의 오류 코드가 404인지 확인합니다. (오류 코드 404는 사용자가 찾을 수 없는 페이지를 탐색할 때 반환되는 표준 코드입니다.) 그런 다음 오류 코드가 일치하면 사용자를 ErrorPage.html 페이지로 이동합니다.

이제 Visual Studio에서 코드를 실행하면 아래 출력을 얻을 수 있습니다.

산출:-

페이지 탐색 http://localhost:53003/Demo1.aspx . Demo1.aspx는 우리 응용 프로그램에 존재하지 않는다는 점을 기억하십시오. 그러면 아래 출력이 표시됩니다.

ASP.NET에서 처리되지 않은 예외

위 페이지는 애플리케이션에서 오류가 발생했음을 보여줍니다. 결과적으로 Error.html 페이지가 사용자에게 표시됩니다.

ASP.NET 오류 로깅

애플리케이션 오류를 로깅함으로써 개발자가 나중에 오류를 디버깅하고 해결하는 데 도움이 됩니다. ASP.Net에는 오류를 로깅하는 기능이 있습니다. 이는 오류가 캡처될 때 Global.asax.cs 파일에서 수행됩니다. 캡처링 프로세스 중에 오류 메시지를 로그 파일에 쓸 수 있습니다.

이에 대한 예를 살펴보겠습니다.

  • Errorpage.html이 있는 동일한 DemoApplication을 사용할 것입니다.
  • 그리고 우리 애플리케이션에 존재하지 않는 웹 페이지를 보려고 시도할 것입니다.
  • 이 경우 ErrorPage.html 페이지로 리디렉션되어야 합니다.
  • 동시에 오류 메시지를 로그 파일에 기록합니다. 이를 달성하기 위한 단계를 살펴보겠습니다.

단계 1) DemoApplication을 작업해 보겠습니다. 솔루션 탐색기에서 Global.asax.cs 파일을 엽니다.

ASP.NET 오류 로깅

단계 2) global.asax.cs에 아래 코드 줄을 추가합니다. 그러면 오류가 있는지 확인하고 그에 따라 ErrorPage.html 페이지를 표시합니다. 또한 동시에 'AllErrors.txt'라는 파일에 오류 세부 정보를 기록합니다. 예를 들어, 이 파일을 D 드라이브에 생성하도록 코드를 작성합니다.

ASP.NET 오류 로깅

namespace DemoApplication
{  

  public partial class Demo : System.Web.UI.Page  
		{  
		  protected void Application_Error(object sender, EventArgs e)  
		  {
		   Exception exc = Server.GetLastError();
		   String str ="";
		   str = exc.Message;
		   
		   String path = @"D:\AllErrors.txt";
		  File.WriteAllTest(path,str);
		  Server.trrasfer("~/ErrorPage.html");
		  }
		}
}

코드 설명:-

  1. 첫 번째 줄은 'Server.GetLastError' 메서드를 사용하여 오류 자체를 가져오는 것입니다. 그런 다음 변수 'exc'에 할당됩니다.
  2. 그런 다음 'str'이라는 빈 문자열 변수를 만듭니다. 'exc.Message' 속성을 사용하여 실제 오류 메시지를 얻습니다. exc.Message 속성에는 응용 프로그램을 실행할 때 발생하는 모든 오류에 대한 정확한 메시지가 있습니다. 그런 다음 문자열 변수에 할당됩니다.
  3. 다음으로 'AllErrrrors.txt'라는 파일을 정의합니다. 여기에서 모든 오류 메시지가 전송됩니다. 모든 오류 메시지를 포함하는 문자열 'str'을 이 파일에 씁니다.
  4. 마지막으로 사용자를 ErrorPage.html 파일로 전송합니다.

산출:-

페이지 탐색 http://localhost:53003/Demo1.aspx . Demo1.aspx는 우리 응용 프로그램에 존재하지 않는다는 점을 기억하십시오. 그러면 아래 출력이 표시됩니다.

ASP.NET 오류 로깅

그리고 동시에 'AllErrors.txt' 파일을 열면 아래와 같은 정보를 볼 수 있습니다.

ASP.NET 오류 로깅

오류 메시지는 나중에 디버깅 목적으로 개발자에게 전달될 수 있습니다.

제품 개요

  • ASP.Net에는 디버깅 및 오류 처리를 수행하는 기능이 있습니다.
  • 디버깅은 코드에 중단점을 추가하여 달성할 수 있습니다. 그런 다음 Visual Studio에서 디버깅 시작 옵션을 실행하여 코드를 디버깅합니다.
  • 추적은 애플리케이션을 실행하는 동안 추가 정보를 제공하는 기능입니다. 이는 애플리케이션 또는 페이지 수준에서 수행할 수 있습니다.
  • 페이지 수준에서는 Trace=true 코드를 페이지 지시문에 추가해야 합니다.
  • 애플리케이션 수준에서는 해당 애플리케이션에 대해 Trace.axd라는 추가 페이지가 생성됩니다. 이는 필요한 모든 추적 정보를 제공합니다.

이 게시물을 요약하면 다음과 같습니다.