Net C#를 사용 하 여 ASP.NET에서 페이지를 보고 하는 사용자 지정 오류를 만드는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 306355 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR306355
모두 확대 | 모두 축소

이 페이지에서

요약

ASP.NET에서 발생 하는 경우에 오류에 응답 하 고 Visual C#.NET 코드를 사용 하는 방법을 설명 합니다. ASP.NET 오류 처리 옵션에서 기존의 Microsoft Active Server Pages (ASP)를 향상 시켰습니다. ASP.NET에서는 응용 프로그램에서 여러 다른 수준에서 오류를 처리할 수 있습니다.

ASP.NET의 새로운 기능

ASP.NET에서는 처리 오류에 응답 하는 방법에 여러 가지 발전을 제공 합니다. 기존 ASP에서 "On Error Resume Next" (또는 JScript에서 try catch 블록)를 사용 하 여 오류를 처리합니다. 또한 Microsoft 인터넷 정보 서비스 (IIS) 5.0을 실행 하는 경우 사용자 지정 오류 보고 페이지를 만드는 ASPError 개체를 사용 합니다. 그러나 이러한 방법은 제한이 있습니다.

ASP.NET 여러 수준에서 처리 및 ASP.NET 응용 프로그램을 실행할 때 발생할 수 있는 오류 응답 수를 제공 합니다. ASP.NET에서는 트래핑 및 발생 하는 경우에 오류에 응답 하는 데 사용할 수 있는 세 가지 기본 방법: Page_ErrorApplication_Error응용 프로그램 구성 파일 (Web.config).

이 문서에서는 ASP.NET 응용 프로그램에 새 기능을 사용 하는 방법을 보여 줍니다. 사용자 지정 오류 페이지 및 ASP.NET에 직접 관련 된 일반 오류 보고를 제공 하는 방법을 설명 합니다 있지만이 문서 기타 오류 처리 방법은 try-catch-finally 블록 및 공용 언어 런타임 (CLR) 예외 시스템 등을 설명 하지 않습니다.

Page_Error 메서드를 사용 하는 방법

Page_Error 이벤트 처리기를 페이지 수준에서 발생 하는 오류를 잡는 방법을 제공 합니다. 때와 샘플 코드를 간단히 오류 정보를 표시, 이벤트 또는 다른 작업을 수행할 수 있습니다.

참고 데모 목적 으로만 브라우저에 자세한 오류 정보를 표시 하는이 예제입니다. 특히 응용 프로그램이 인터넷에서 실행 중인 경우 응용 프로그램의 최종 사용자에 게 자세한 정보를 표시 하는 경우 주의 해야 합니다. 적절 한 작업을 오류가 발생 했음을 알리는 및 다음 이벤트 로그에 특정 오류 정보를 실제로 기록 하는 사용자에 게 메시지를 표시할 수 있습니다.

이 예제에서는 Page_Load 이벤트 처리기에 오류가 발생 하면 null 예외를 throw 합니다. Page_Error 이벤트 처리기를 사용 하는 방법을 보여 주는 초기 페이지를 만들려면 다음이 단계를 수행 합니다.
  1. 명명 된 PageEvent.aspxto 프로젝트에 새 파일을 추가 하려면 다음과 같이 하십시오.
    1. Microsoft Visual Studio.NET을 엽니다.
    2. 솔루션 탐색기에서 프로젝트 노드를 마우스 오른쪽 단추로 클릭 하 고 추가를 가리킨 다음 Web Form 추가클릭 합니다.
    3. 이름 텍스트 상자에 입력 PageEvent.aspx를 클릭 하 고 열기를 클릭 합니다.
  2. 다음 코드를 PageEvent.aspx에 추가:
    <script language=C# runat="server">
    void Page_Load(object sender, System.EventArgs e)
    {
    	throw(new ArgumentNullException());
    }
    
    public void Page_Error(object sender,EventArgs e)
    {
    	Exception objErr = Server.GetLastError().GetBaseException();
    	string err =	"<b>Error Caught in Page_Error event</b><hr><br>" + 
    			"<br><b>Error in: </b>" + Request.Url.ToString() +
    			"<br><b>Error Message: </b>" + objErr.Message.ToString()+
    			"<br><b>Stack Trace:</b><br>" + 
    	                  objErr.StackTrace.ToString();
    	Response.Write(err.ToString());
    	Server.ClearError();
    }
    </script> 
    					

    참고 이 코드 샘플에서 AutoEventWireup 특성은 명시적으로 설정 하지. 이렇게 하면 명시적으로 AutoEventWireup 특성에 assigna 값은 기본 값이 true 이면 사용 됩니다. Visual Studio.NET을 yourapplications를 개발 하는 데 사용 하는 웹 양식 서식 파일 코드 명시적으로 AutoEventWireup 특성 값을 false로 설정 합니다. 기본 값 thatASP.NET는 차이가 있으며 기본 값을이 특성에는 Visual Studio.NET 템플릿 codeassigns. AutoEventWireup 특성 값 false에 선언 된 이벤트 처리기에 설정 되어 있는.ASPX 페이지가 실행 notfire. Thisfunctionality에 대 한 모를 경우 혼동을 일으킬 수 있습니다.
  3. 파일 메뉴에서 저장 PageEvent.aspx를 클릭 합니다.
  4. 페이지를 마우스 오른쪽 단추로 클릭 하 고 페이지를 실행 하려면 브라우저에서 보기 클릭 합니다. 오류가 throw 되는 통지 및 코드 사양에 reportedaccording.
참고 코드 문제 Server.ClearError에 대 한 호출을 확인할 수 있습니다. 오류를 Application_Error 이벤트 처리기를 계속할 수 없습니다.

또한 취해야 참고 Inherits 특성을 @ Page 지시문에서. Inherits 가 설정 되 면 해당 페이지로 이동 하기 전에 프로젝트를 빌드해야 합니다. 프로젝트를 먼저 빌드할 하지 않는 경우 다음과 같은 오류 메시지가 나타납니다.
'Project.PageEvent' 올바른 유형이 아닙니다.

Application_Error 메서드를 사용 하는 방법

Page_Error 이벤트 처리기와 마찬가지로 사용할 수 있습니다 Application_Error 이벤트 처리기는 응용 프로그램에서 발생 하는 오류를 트래핑 하 여. 이벤트의 응용 프로그램 수준 범위가 응용 프로그램 오류 정보를 기록 또는 발생할 수 있는 다른 응용 프로그램 수준 오류를 처리할 수 있습니다.

다음 예제 Page_Error 위의 코드 예제를 기반으로 하 고 Page_Load 에서 오류 Page_Error 이벤트 처리기에서 트래핑 하지가 발생 합니다. Application_Error 이벤트 처리기는 응용 프로그램의 Global.asax 파일에서 지정 됩니다. 이 섹션의 단계에서는 편의상 예외 throw Application_Error 이벤트 처리기의 Global.asax 파일에서 오류를 트래핑 하 고 이벤트 로그에 오류를 기록 하는 새 페이지를 만듭니다. 다음 단계는 Application_Error 메서드를 사용 하는 방법을 보여 줍니다.
  1. AppEvent.aspx yourproject 라는 새 파일을 추가 합니다.
  2. AppEvent.aspx에 다음 코드를 추가 합니다.
    <script language=C# runat="server">
    	void Page_Load(object sender, System.EventArgs e)
    	{
    		throw(new ArgumentNullException());
    	}
    </script>
    					

    참고AutoEventWireup 특성에 대 한 "Page_Error" 섹션에서 설명한 내용을이 단계에서는 코드 예제에도 적용 됩니다. Theinformation에 대 한 자세한 내용은 "Page_Error" 섹션을 참조 하십시오.
  3. 파일 메뉴에서 AppEvent.aspx 저장을 클릭 합니다.
  4. Application_Error 이벤트 처리기는 오류를 잡아내는 AppEvent.aspx 페이지의 Page_Load 이벤트 처리기에서 youthrow를 Global.asax 파일에 추가 합니다. 이벤트 로그를 사용 하 여 Global.asax System.Diagnostics 네임 스페이스에 대 한 using 문을 addanother 해야 확인 합니다.

    Thefollowing 코드를 Global.asax 파일에 추가 합니다.
    using System.Diagnostics;
    
    protected void Application_Error(object sender, EventArgs e)
    {
    	Exception objErr = Server.GetLastError().GetBaseException();
    	string err =	"Error Caught in Application_Error event\n" +
    			"Error in: " + Request.Url.ToString() +
    			"\nError Message:" + objErr.Message.ToString()+ 
    			"\nStack Trace:" + objErr.StackTrace.ToString();
    	EventLog.WriteEntry("Sample_WebApp",err,EventLogEntryType.Error);
    	Server.ClearError();
    	//additional actions...
    } 
    					
  5. Global.asax 파일을 저장 합니다.
  6. Visual Studio.NET에서 빌드 메뉴에서 빌드를 클릭 합니다.
  7. 페이지를 마우스 오른쪽 단추로 클릭 한 다음 브라우저에서 보기를 클릭 합니다. 하지만이 경우 페이지는 비어 있게 됩니다, 그리고 이벤트 로그에 새 항목이 추가 되었습니다 noticethat 해야. 이 샘플은 이벤트 뷰어에서 액세스할 수 있는 응용 프로그램 로그에 항목을 만듭니다. Loggingthe 오류가 발생 한 후 기타 다른 사용자 friendlyerror 페이지에 사용자를 리디렉션하거나 필요할 경우 추가 조치를 수행 하는 것이 좋습니다.

Web.config 파일을 사용 하는 방법

Server.ClearError 를 호출 하지 않으면 트랩 Page_Error 또는 Application_Error 이벤트 처리기에서 오류 메시지, 오류를 처리 하는 경우 Web.config 파일의 <customErrors>섹션에서 설정에 따라. <customErrors>섹션에서 리디렉션 페이지를 기본 오류 페이지 (defaultRedirect)로 지정 하거나 발생 하는 HTTP 오류 코드를 기반으로 특정 페이지를 지정할 수 있습니다. 사용자에 게 오류 메시지를 사용자 지정 하려면이 메서드를 사용할 수 있습니다.

오류가 발생 하는 응용 프로그램의 이전 수준에서 잡지 못한 경우 사용자 지정 페이지가 표시 됩니다. 여기서는 Server.ClearError 는 호출 되지 않습니다 있도록 Global.asax 파일을 수정 하는 방법을 보여 줍니다. 따라서 오류를 잡는 마지막 지점인 Web.config 파일에서 오류가 처리 됩니다. </customErrors></customErrors>
  1. Global.asax 파일에서 previousexample를 엽니다.
  2. 되도록 오류 서피스는 Web.configfile에서 Server.ClearError 줄을 주석 처리 합니다.
  3. 변경 내용을 Global.asax에 저장 합니다. 코드 nowappear를 다음과 유사 해야합니다.
    using System.Diagnostics;
    
    protected void Application_Error(object sender, EventArgs e)
    {
    	Exception objErr = Server.GetLastError().GetBaseException();
    	string err =	"Error Caught in Application_Error event\n" +
    			"Error in: " + Request.Url.ToString() +
    			"\nError Message:" + objErr.Message.ToString() + 
    			"\nStack Trace:" + objErr.StackTrace.ToString();
    	EventLog.WriteEntry("Sample_WebApp",err,EventLogEntryType.Error);
    	//Server.ClearError();
    	//additional actions...
    } 
    					
  4. 다음 코드를 추가 하 고 <customErrors>구역이 지정 페이지로 사용자를 리디렉션합니다:<b00> </b00> </customErrors>
    <customErrors defaultRedirect="http://hostName/applicationName/errorStatus.htm" mode="On">
    </customErrors>
    						
    참고 관련 웹 서버 andapplication 이름을 참조할 수 있도록 defaultRedirect 특성에서 파일 경로 수정 해야 합니다.
  5. 이 수준에서 오류는 기본 오류 페이지 sentto 이기 때문에이 메서드를 사용 하 여이 예제 오류 페이지에 대 한.htm 페이지를 사용 하므로, theuser에 표시 되는 내용을 제어 하는 ErrorStatus.htm.Keep 이라는 이름의 오류 페이지를 만들어야 합니다. 다음 코드는 ErrorStatus.htm 추가 합니다.
    <HTML>
    <HEAD>
    <TITLE></TITLE>
    <META NAME="GENERATOR" Content="Microsoft Visual Studio 7.0">
    </HEAD>
    <BODY>
         <b>Custom Error page!</b>
         <br>
         You have been redirected here from the <customErrors> section of the 
         Web.config file.
    </BODY>
    </HTML>
    					
  6. 코드 테스트, 파일 저장, 프로젝트, andthen AppEvent.aspx를 브라우저에서 봅니다. 공지 오류가 throw 됩니다 ErrorStatus.htm 페이지로 이동 됩니다.
<customErrors>섹션에 있는 defaultRedirect 특성의 값으로 기본 오류 페이지를 참조할 수도 있지만 리디렉션하는 발생 하는 HTTP 오류 코드에 따라 특정 페이지를 지정할 수도 있습니다. 이 옵션에 대 한 <error>자식 요소가 있습니다. 예:<b00> </b00> </error> </customErrors>
<customErrors defaultRedirect="http://hostName/applicationName/errorStatus.htm" mode="On">
	<error statusCode="404" redirect="filenotfound.htm" />
</customErrors>
				
참고DefaultRedirect <customErrors>섹션에 지정 된 페이지는.htm 파일입니다. I

On으로 설정 된 mode 특성을 포함 하는 <customErrors>섹션을 확인 합니다. Mode 특성은 오류 리디렉션이 발생 하는 방법을 제어 하는 데 사용 됩니다. 예를 들어, 응용 프로그램을 개발 하는 경우 대부분의 경우 실제 ASP.NET 오류 메시지를 보려면을 보다 친숙 한 오류 페이지로 이동 하지 않을. 모드 특성이 다음 설정을 포함: </customErrors></customErrors>
  • : 처리 되지 않은 예외 지정된 defaultRedirect 페이지로 사용자를 리디렉션합니다. 이 모드는 주로 프로덕션 환경에서 사용 됩니다.
  • Off: 사용자 예외 정보를 받습니다 및 defaultRedirect 페이지 redirectedto 하지 않습니다. 이 모드는 주로 개발 환경에서 사용 됩니다.
  • RemoteOnly: (usinglocalhost) 하 여 로컬 컴퓨터의 사이트에 액세스 하는 사용자가 예외 정보를 받을 합니다. 다른 모든 사용자는 defaultRedirect 페이지로 리디렉션됩니다. 이 모드는 주로 디버깅에 사용 됩니다.

문제 해결

Microsoft Windows 2000 및 Microsoft Windows XP의 기본 설치를 ASP.NET 작업자 프로세스에서 웹 응용 프로그램 코드를 실행합니다. 이 프로세스의 id는 ASPNET 계정 이라고 하는 권한이 없는 로컬 계정이 기본값으로 사용 됩니다. ASP.NET의 베타 릴리스에서 프로세스 id 컴퓨터에서 많은 권한 가진 강력한 관리 계정 시스템 이었습니다.

기본 설치는 Windows Server 2003 (IIS 6)에 ASP.NET 작업자 프로세스에서 웹 응용 프로그램 코드를 실행합니다. 이 프로세스의 id NetworkService 라는 제한 된 계정을 기본값으로 사용 됩니다.

이 변경 내용과 영향 추가 액세스 권한이 필요할 수 있는 다른 코드를이 문서의 코드 실행에 대 한 자세한 내용은 다음 웹 사이트를 방문:
Microsoft.NET Framework 버전 1 보안 변경
http://msdn2.microsoft.com/en-us/library/ms994923.aspx

참조

자세한 내용은 다음 Microsoft 웹 사이트를 방문 하십시오.
.NET에서 예외 관리

HttpServerUtility.ClearError 메서드

MSDN.NET 개발 센터

Microsoft.NET 홈 페이지

속성

기술 자료: 306355 - 마지막 검토: 2013년 10월 29일 화요일 - 수정: 4.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
키워드:?
kbconfig kbhowtomaster kbweb kbmt KB306355 KbMtko
기계 번역된 문서
이 문서는 Microsoft 기계 번역 소프트웨어를 이용하여 번역되었으며 Microsoft Community에 의한 Community Translation Framework(CTF) 기술 혹은 사람이 번역한 내용에 의하여 사후 편집될 수 있습니다. Microsoft는 Knowledge Base에 있는 모든 문서에 다양한 언어로 접근할 수 있도록 하기 위하여 기계 번역, 사람에 의한 번역 및 커뮤니티가 편집한 내용을 모두 제공합니다. 번역된 문서는 어휘, 구문 및/혹은 문법에 오류가 있을 수 있습니다. Microsoft는 번역 오류로 인한 부정확성, 오류 및/또는 손해와 이를 고객이 사용하는 데에 대하여 책임을 지지 않습니다.
이 문서의 영문 버전 보기:306355

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com