조치 필터 속성을 통해 사용자 정의 오류 처리를 구현하려고합니다.액션 필터 속성을 통해 ASP.Net MVC 사용자 정의 오류 처리
[HandleError (Order = 2)]
[HandleError (Order = 1, ExceptionType = typeof(NullReferenceException), View = "CustomError")]
public class ArticlesController : Controller
{
public object OhDearACrash()
{
throw new Exception("Oh Dear");
}
public ActionResult NullRefCrash()
{
throw new NullReferenceException();
}
public ActionResult ThrowNotImplemented()
{
throw new NotImplementedException();
}
OhDearACrash 및 ThrowNotImplemented 둘 [는 handleError] 공유보기/위치한 Error.aspx로를 통해 에러 메시지를 렌더링하는 촬상되어 다음과 같이
내 코드이다.
OhDearACrash와 예:
Message = <%= ViewData.Model.Exception.Message %>
는
Message = Oh Dear
NullRefCrash가 [HandeError]은 예외 유형 = 대해서 typeof (는 NullReferenceException)을 다루는 것을 의해 촬상되는 렌더링한다. 인 CustomError가 ViewData.Model가 null 예외가 CustomError.aspx를 만들려면
System.NullReferenceException was unhandled by user code
Message="Object reference not set to an instance of an object."
을 발생
Message = <%= ViewData.Model.Exception.Message %>
를 사용하여 오류 메시지가 렌더링을 시도
내가 Error.aspx로 복사 및 붙여 넣기 새로 생성 된 뷰/오류에 추가하고 CustomView.aspx로 이름을 변경합니다.
Error.aspx와 CustomError.aspx는 본질적으로 동일하므로 어떻게 발생합니까?
편집 :
나는 단지 위와 CustomError.aspx보기는 완벽하게 잘 작동이 포함 된 테스트 프로젝트 생성 - 문제를 찾아 내 기존 프로젝트를 디버깅하는 어쨌든 거기를?
이론상으로 아니오, 나는 그것을 묘사 한대로 일어난다. 코드를 단계별로 실행하면 ThrowNotImplemented에서 CustomError.aspx로, OhDearACrash에서 Error.aspx로가는 것과 같은 방식으로 진행됩니다. –
공유 뷰 디렉터리에 오류 페이지를 복사하여 다시 붙여 넣은 다음 이름을 MyError로 변경하고 [HandleError (Order = 1, ExceptionType = typeof (NullReferenceException), View = "MyError")]를 통해이를 참조했습니다. 작품에 Views/Shared 디렉토리를 사용 했습니까? –