컴퓨터 지식 네트워크 - 컴퓨터 지식 - ASP.net MVC 사용자 정의 오류 처리 페이지

ASP.net MVC 사용자 정의 오류 처리 페이지

ASP NET MVC에서는 HandleErrorAttribute 특성을 사용하여 Action에서 발생한 예외를 처리하는 방법을 지정할 수 있습니다. Action이 HandleErrorAttribute 특성을 설정하는 한 기본적으로 MVC는 Action에서 예외가 발생할 때 표시됩니다. 오류 보기 이 보기는 ~/Views/Shared 디렉토리에 있습니다.

HandleError 속성 설정

다음 속성을 설정하여 HandleErrorAttribute 속성의 기본 처리를 변경할 수 있습니다.

ExceptionType은 필터가 처리하는 예외 유형을 지정합니다. 이 속성이 지정되지 않으면 필터는 모든 예외를 처리합니다.

View는 필터가 표시할 보기의 이름을 지정합니다. 예외가 발생하는 경우

마스터는 뷰 마스터의 이름을 지정합니다(있는 경우).

주문은 필터가 적용되는 순서를 지정합니다. 여러 HandleErrorAttribute 필터

순서 속성 지정

작업에 여러 개의 HandleErrorAttribute가 설정된 경우 Order 속성을 사용하여 사용할 필터를 결정할 수 있습니다. 해당 값은 다음에서 정수로 설정될 수 있습니다. (가장 높은 우선순위)를 양의 정수로 변환하여 우선순위 값이 클수록 우선순위가 낮아집니다.

컨트롤러에 적용된 필터는 모든 항목에 자동으로 적용됩니다. 컨트롤러의 액션

컨트롤러와 액션이 모두 HandleErrorAttribute로 적용되는 경우 Order 속성 값이 동일하다면 컨트롤러의 필터가 먼저 실행된 다음 필터가 실행됩니다. Action이 실행됩니다.

Order 속성이 동일한 필터의 경우 실행 순서가 불확실합니다.

p>

Order 속성이 지정되지 않으면 기본값은 입니다. 다른 필터가 Order를

로 지정하지 않는 한 이 필터는 다른 필터보다 먼저 실행됩니다. 여러 필터가 적용 가능한 경우 예외를 처리할 수 있는 첫 번째 필터가 먼저 호출되고 예외 처리가 종료됩니다

p>

View에서 예외 정보를 얻습니다.

ASP NET MVC 프레임워크는 정보가 ViewDataDictionary에 저장되어 오류 보기에 전달됩니다. ViewDataDictionary의 Model 속성은 다음의 인스턴스입니다. ExceptionContext 클래스. 이 ViewData에는 다음 키가 있습니다.

ActionName: 대상 작업 메서드의 이름

ControllerName: 대상 컨트롤러의 이름

Exception : 예외 객체

사용자 정의 오류 처리 활성화

HandleErrorAttribute 필터에 대한 사용자 정의 오류를 활성화하겠습니다. 열려 있는 프로그램의 nfig 파일을 처리하려면 다음과 같이 시스템 웹 섹션에 customErrors 요소를 추가합니다. 아래

lt; 시스템 webgt;

lt; customErrors 모드= On defaultRedirect= 오류 /gt;

tem webgt;

오류 보기에서 오류 처리

때때로 오류 보기에서 오류가 발생하고 ASP NET에서는 기본 오류 페이지(노란색 배경에 빨간색 텍스트)를 표시합니다. 이러한 상황을 방지하기 위해 nfig 파일의 customErrors 섹션에서 오류 페이지를 다음과 같이 사용자 정의합니다.

lt; system webgt;

lt;

lt; 오류 상태 코드= / /gt; /customErrorsgt; p> 샘플 프로그램

다음 예에서는 예외 처리를 사용자 정의하기 위해 Controller 및 Action에 HandleErrorAttribute 특성을 적용하는 방법을 보여줍니다.

예제에서 HomeController에는 ThrowException이라는 Action 메서드가 있습니다. ApplicationException 유형 오류가 발생합니다. 이 작업은 HandleErrorAttribute를 적용하지만 어떤 매개변수도 설정하지 않습니다. 작업이 실행되면 예외가 발생하고 기본 오류 보기가 표시됩니다.

ThrowNotImplemented 메서드는 두 가지를 적용합니다. 매개변수의 HandleErrorAttribute 보기 매개변수는 사용자 정의 오류 보기 이름을 지정합니다. CustomErrorView ExceptionType 매개변수는 필터가 ThrowNotImplemented 유형의 예외만 처리하도록 지정합니다.

컨트롤러의 HandleErrorAttribute는 필터가 예외만 처리한다는 의미로 Order 매개변수를 설정합니다. ThrowNotImplemented 유형입니다. Index 또는 About 메소드에서 예외가 발생하면 실행됩니다.

동시에 이 예제에서는 CustomErrorView 및 CustomError Master 뷰의 내용을 보여줍니다.

CustomErrorView는 예외를 발생시킨 컨트롤러, 작업 이름, 예외 내용 및 스택 추적 정보와 같은 예외 정보를 표시합니다.

뷰 인덱스에는 두 개의 작업을 각각 가리키는 두 개의 링크인 ThrowException과 ThrowNotImplemented가 있습니다.

HomeController 클래스

[ HandleError(Order = )]

public class HomeController: Controller

{

public ActionResult Index()

{

ViewData[ Message ] = ASP NET MVC로 이동!

return View();

공개 ActionResult About()

{

return View()

}

[HandleError]

공개 ActionResult ThrowExceptio

n()

 {

throw new ApplicationException()

 }

[HandleError(View = CustomErrorView ExceptionType = typeof(NotImplementedException ))]

public ActionResult ThrowNotImplemented()

 {

throw new NotImplementedException(); >}

CustomErrorView 보기

lt; asp:콘텐츠 ID= 콘텐츠 ContentPlaceHolderID= TitleContent runat= 서버

CustomErrorView

lt; ;/asp:Contentgt;

lt; asp:콘텐츠 ID= ContentPlaceHolderID= MainContent runat= 서버

lt;/h gt; >

 lt;pgt;

컨트롤러: lt;=((HandleErrorInfo)ViewData Model) ControllerName

 lt;/pgt; ;pgt;

액션: lt;=((HandleErrorInfo)ViewData 모델) ActionName

lt;/pgt; p>

p>

메시지: lt;=((HandleErrorInfo)ViewData Model) 예외 메시지

lt;/pgt; /p>

스택 추적: lt;=((HandleErrorInfo)ViewData 모델) 예외 StackTrace gt;

lt;/asp: Contentgt; /p>

색인 보기

lt; asp: 콘텐츠 ID= indexTitle ContentPlaceHolderID= TitleContent runat= 서버

홈 페이지

lt; asp: Contentgt;

lt;asp:Content ID= indexContent ContentPlaceHolderID= MainContent runat= 서버 gt;= Html Encode(ViewData[ 메시지]) gt;lt;/ h gt;

lt; Html ActionLink( Exce 던지기

ption ThrowException )gt; (기본 오류 페이지)

lt;br /gt;lt;br /gt;

lt;= Html ActionLink( 구현되지 않은 예외 ThrowNotImplemented )gt; (사용자 정의 오류 페이지)

lt;/asp:Contentgt;

마스터 페이지 CustomError Master

lt;@ Master Language= C# Inherits= System Web Mvc ViewMasterPage gt;

lt; !DOCTYPE PUBLIC //W C//DTD XHTML Transitional//EN 전환 dtd gt;head runat= 서버 gt;

lt;titlegt;lt;asp:ContentPlaceHolder ID= TitleContent runat= server /gt;lt;/titlegt;

lt;link 스타일시트 유형 = text/css /gt; p>lt; 스타일 유형= text/css gt;

본문 오류

{

배경 색상: 적갈색; #;

}

lt;/stylegt;

lt;/headgt; /p>

lt; div 클래스= 페이지 gt; div ID= 헤더 gt; >lt; h gt; /h gt;

lt; ; Html RenderPartial(LogOnUserControl)

lt;/divgt; div id= menucontainer gt; ul id= 메뉴 gt;

 lt;ligt;lt;= Html ActionLink(홈 인덱스 홈)gt;lt;/ligt;lt;= Html ActionLink ( 홈 소개 )gt;lt;/ligt;

 lt;/ulgt;

 lt;/divgt;

lt;/divgt; p>

lt;div id= 메인 gt;

lt;asp: ContentPlaceHolder ID= MainConte

nt runat= 서버 /gt;

lt; div ID= 바닥글

lt;/divgt;

lt;/divgt;

lt;/bodygt; 리식신지/Article/program/net/201311/11950

上篇: Ibm 노트북은 어떤 브랜드의 중국어입니까? 下篇: 11구역은 무엇을 의미하나요?
관련 내용