2012-02-04 1 views
4

내 ASP.NET MVC 3 응용 프로그램이 두 가지 작업이있는 Errors 컨트롤러로 리디렉션 구성되어 - 내가 가지고있는ASP.NET MVC3는 여전히 내 자신도 지정에도 불구하고 Error.aspx로/.cshtml을 찾습니다

<customErrors mode="On" defaultRedirect="/Errors/ApplicationError"> 
    <error statusCode="404" redirect="/Errors/NotFound" /> 
</customErrors> 

동작 방법 각각에서 렌더링되는 뷰의 커플 :

  • /Views/Shared/NotFound.cshtml
  • /Views/Shared/ApplicationError.cshtml
01,235,164 내 ErrorsController ApplicationError 행동

내가 다음을 수행하십시오

public ActionResult ApplicationError() 
{ 
    Response.StatusCode = 500; 
    return View(); 
} 

이 작동하고 내 ApplicationError.cshtml보기가 렌더링, 기록됩니다 일어난 어떤 예외, 모든 좋은.

System.InvalidOperationException 뷰 '오류'또는 마스터를 찾을 수 없습니다 또는 더보기 엔진은 검색 위치를 지원하지 않습니다 :

그러나 ELMAH에 나는이 추가 오류가 기록되고 참조하십시오. 다음 위치가 검색되었습니다. ~/Views/Throw/Error.aspx ~/Views/Throw/Error.ascx ~/Views/Shared/Error.aspx ~/Views/Shared/Error.ascx ~/Views/Throw/Error. 이미했습니다 때 cshtml ~/조회/던지기/Error.vbhtml ~/조회/공유/Error.cshtml ~/뷰/공유/Error.vbhtml는

왜 ASP.NET MVC는 여전히 이러한 전망에 대한 사냥 오류를 처리하고 내 자신의보기가 성공적으로 위치하고 렌더링 된?

추가 정보 :

  • 나는 [HandleError]author of ELMAH ATIF하여이 Stack Overflow answer에 기반이되는 this advice에 따라 내가 filters.Add(new ElmahHandleErrorAttribute());Global.asax.csfilters.Add(new HandleErrorAttribute()); 대체 어디

  • 속성을 사용하지 않는 . 당신이 파생 클래스 (ElmahHandleErrorAttribute)로 HandleErrorAttribute를 교체했습니다 있지만

+0

webmatrix에서 업그레이드 했습니까? 아니면 webmatrix 라이브러리에서 업그레이드 했습니까? –

+0

'HandleErrorAttribute'가 전역 적으로 적용되지 않는지 확인하십시오. 'global.asax.cs'에서'RegisterGlobalFilters'를보십시오. – JimmiTh

+0

@AdamTuliper - 이것은 VS2010 Premium이 아닙니다.이 프로젝트는 WebMatrix를 본 적이 없습니다. – Kev

답변

3

내가 생각, 사용자 정의 속성의 OnException 아마 여전히 base.OnException를 호출 - 즉 HandleErrorAttribute.OnException합니다.

HandleErrorAttribute.OnException

완전히 (customErrors에이 꺼져있는 경우 ASP.NET 표준 YSOD를 표시시키는 제외)의 web.config 설정을 무시하고 상태 코드 (500)와 ViewResult의 행동의 결과를 설정하고, View 세트 "오류 "(속성에 View 속성이 설정되지 않은 경우 기본값).

e.e.

  1. 당신은
  2. ElmahHandleErrorAttribute 후비는 그것을이 예외 로그, base.OnException
  3. HandleErrorAttribute.OnExceptionView 세트 ViewResult에 작업의 결과를 설정 호출하는 예외를 던져 : 나는이 같은 일이 발생 같은데요 "오류"에
  4. 는,
  5. ViewEngine이 "오류"를 찾을하는 데 실패하고 너무 ELMAH에 의해 기록되는 새로운 예외
  6. 을 ... 발생하지만, (작용 밖에 발생이 예외로 인해)
  7. 대신 ASP.NET 자체/오류 /은 ApplicationError
  8. ... 전화를 픽업하고있는 Web.config
  9. 에서 errorPages 사용하지 ElmahHandleErrorAttribute 의해 픽업. .. 원하는 뷰를 표시합니다.

... 실제로 던진 예외는 아니지만 ViewEngine이 던진 예외입니다.

web.config 설정을 적용하려면 자체 예외 처리를 HandleError를 기반으로하지 말고 구현해야 할 수 있습니다. MVC 소스 (here)에서 HandleErrorAttribute을 살펴보고 수행해야 할 작업 (사용자의 경우 수행하지 말아야 할 작업)을 확인하십시오.

+0

정확하게 똑같은 문제가 있습니다. 즉, 1에서 8 단계가 그런 식으로 발생한다고 가정합니다. ELMAH를 사용하지 ... 표준 CustomErrors 및 HealthMonitoring을 오류 전자 메일 관리자로 사용합니다. 이 사건에 대한 제안이 있습니까? 고맙습니다. – nrod

관련 문제