2013-08-12 2 views
7

MVC 4에서 사용자 정의 오류 페이지를 구현해야합니다. 기본적으로 사용자가 productID가 존재하지 않는 제품의 Details을 보려고하면이 사용자 정의 오류 페이지가 필요합니다. 사용자 정의 오류 페이지가 호출되지 않음

나는 NotFound.aspx

이 페이지의 내부 내용은 내 자신의 사용자 지정 오류 페이지를 만들었 :

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Simple.Master" 
Inherits="System.Web.Mvc.ViewPage<System.Web.Mvc.HandleErrorInfo>" %> 
<asp:Content ID="errorTitle" ContentPlaceHolderID="TitleContent" runat="server"> 
Error 
</asp:Content> 
<asp:Content ID="errorContent" ContentPlaceHolderID="MainContent" runat="server"> 
<h2> 
Sorry, you requested a product that doesn't exist. Make sure you 
requested a valid ProductID 
</h2> 
</asp:Content> 

그리고 내 ActionMethod에 HandleError 필터를 적용 : Details 같이

[HandleError(View="NotFound")] 
public ActionResult Details(int id) {... 

문제는 항상 기본보기 : Views/Shared/Error.aspx이 (가) 호출되고 새 사용자 지정 오류가 아니라는 것입니다. 페이지. 이견있는 사람 ?

답변

1

이 솔루션은 내 ProductController 클래스는 또한 order 속성으로 설정해야 할 필요가 있다는 것입니다 :

[HandleError(Order=2)] 
public class ProductController : Controller { ... } 

을 의미 : 2의 주문 값을 더 높은 주문을 사용할 수있는 HandleError 필터가없는 경우에만 컨트롤러 전체 필터가 적용되도록합니다.

그리고 완벽하게 작동했습니다. 내 web.config 설정은 다음과 같습니다 : <customErrors mode="On" />.

이것은 그 것이다. defaultRedirect은 전혀 필요하지 않습니다.

참고

: 나는 NO order 속성을 처음 HandleError 필터를했다.
[HandleError] 
public class ProductController : Controller { ... } 

인수없이는 handleError 필터를 적용

, 당신은 Views/Shared/Error.aspx보기가 발생합니다 필터 적용 방법에 의해 던져진 예외 이 사용하도록 지정되어있다.

3

시도해보십시오 (하지만 MVC에서이 코드의 작업에 대해 잘 모르겠습니다). web.config 파일 brlow system.web의 구성 섹션에이 코드를 붙여 넣습니다.

<customErrors mode="On" defaultRedirect="ErrorPage.aspx"> 
    </customErrors> 
    <compilation debug="true" targetFramework="4.0"> 
+0

CustomErrors 모드가 이미 켜져 있습니다. 그렇지 않다면 기본 오류 페이지조차 나타나지 않을 것입니다. 다른 아이디어 ??? –

+2

사실 MVC에 대해 잘 모르겠습니다. –

0

"notfound"동작과 "detail"동작이 동일한 컨트롤러에 있는지 확인하십시오. 그렇지 않으면 컨트롤러 이름을 지정하거나 notfound.aspx를 공유 폴더 아래에 두어야합니다.

+0

공유 폴더에만 있습니다. 그리고 주목할 것은 액션이 아니라 단지 하나의 견해입니다. –

+1

죄송합니다, 전에 오해했습니다! 액션 메소드에서 Http 404를 던 졌나요? 실제로, expcetion이 http 500이 아닌 경우 HandleError는이를 무시합니다. 어쩌면 항상 기본보기를 표시하는 이유 일 수 있습니다. – shimron

2

웹 구성 파일에서 찾을 수있는 사용자 정의 오류 태그를 사용해보십시오. 여기

는 샘플입니다

<system.web> 
    <--- other required may be used here--->  

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

일하지 않았습니다. 기본 리디렉션 속성을 제거하더라도 기본 오류보기로 이동합니다. 그래서 확실히 여기에 역할이 없다고 생각합니다. –

관련 문제