2013-03-06 9 views
3

컨트롤러에 [HandleError] 특성이 설정되어 있습니다.면도날을 사용하여 Asp.net MVC 4에서 HandleError가 더 이상 작동합니까

public ActionResult ShowError() 
    { 

     throw new NullReferenceException(); 
     return View(); 
    } 

이 작업 방법은 해당보기가 있습니다

이 내 행동 방법이다.

나는 내가 뷰 폴더 아래에있는 공유 폴더에 Error.cshtml 파일을 가지고있는 설정

<customErrors mode="On">  
</customErrors> 

에서 사용자 정의 오류를 설정했습니다. 이제 ShowError 컨트롤러 메소드로 이동

내가 내 브라우저 창 대신 공유 폴더에서 오류 페이지에이를 수 F5를 타격에 내 IDE enter image description here

이 창을 제공합니다. enter image description here

오류 페이지를 표시하려면 수행해야 할 다른 조치는 무엇입니까? HandleError을 작동 시키려면 어떻게해야합니까?

감사

+2

'web.config'를 확인하고'debug = "false"'를 설정하십시오. –

+0

NullReferenceException을 수동으로 던져서는 안되며, Framework 자체에서 처리해야합니다. [여기] (http : // stackoverflow.co.kr/a/4792296/1551730) –

+0

팁 주셔서 감사합니다. 첫 번째를 처리하지만 handleError는 여전히 작동해야합니다. – user20358

답변

2
O

케이. 그래서 문제는 IE 9 인 브라우저를 사용하는 것입니다. IE 9는 1KB 미만의 오류 페이지를 표시하는 데 문제가있는 것 같습니다. 나는 내 오류 페이지 끝에 @(new String(' ', 1000))을 넣고 작동 시켰습니다.

1

가하는 HandleErrorAttribute 필터로 사용하기 위해 처리하는 사용자 지정 오류를 활성화 응용 프로그램의 Web.config 파일의 system.web 섹션에 customErrors에 요소를 추가하려면 그 documentation 상태 다음 예와 같이

<system.web> 
    <customErrors mode="On" defaultRedirect="Error" /> 
</system.web> 
+0

그 중 하나도 작동하지 않았습니다. – user20358

+0

설명서마다 모든 작업을 수행하고 있습니다. 나는 여기서 youtube 비디오를 보았는데 http://www.youtube.com/watch?v=Q-7Qa7JIvT0 시연자가 defaultRedirect를 사용하지 않고 작동하게했다. 유일한 차이점은 그가 aspx를 사용하고 있으며 면도기를 사용하고 있습니다. – user20358

0

frictionlesspully에서 설명한대로 defaultRedirect = "Error"에보기의 이름을 넣거나 액션, 컨트롤러 또는 전역 적으로 HandleError 속성에서 지정할 수 있습니다.

[HandleError(View="Error")] 
당신이 명시 적으로 당신은 또한에 승/하위 폴더를 만들 수 있습니다

[HandleError(View="ServerError")] 

예를 들어, "SERVERERROR"/에 공유 그것을 지정하면 뷰가 "오류"가 아닌 다른 이름 할 수

당신은 유연성

/Shared/Errors/Server.cshtml

을 원하는 다음 속성에 경로를 사용하는 경우 그룹에 여러 오류보기

[HandleError(View="Errors/Server")] 

컨트롤러 및/Shared 폴더가 오류보기로 검색되는 폴더입니다.