2012-12-28 2 views
2

다음 기본 컨트롤러를 만들어 InvalidOperationException (보기를 찾을 수 없음)에 사용자 지정 404를 표시했습니다. 어떤 이유로, 나는 페이지를 열 때 404을 발생하게 들어 IIS 7.5 Windows 2008 R2 로컬로 500 개의 원격 및 사용자 지정 404 제공

public class HandlesViewNotFoundController : Controller 
{ 
    protected override void OnException(ExceptionContext filterContext) 
    { 
     //InvalidOperationException is thrown if the path to the view 
     // cannot be resolved by the viewengine 
     if (filterContext.Exception is InvalidOperationException) 
     { 
      if (!filterContext.ExceptionHandled) 
      { 
       filterContext.ExceptionHandled = true; 
       filterContext.Result = new ViewResult { ViewName = "_404" }; 
       filterContext.HttpContext.Response.StatusCode = 404; 
       Response.Clear(); 

       // Clear the error on server. 
       Server.ClearError(); 

       // Avoid IIS7 getting in the middle 
       Response.TrySkipIisCustomErrors = true; 
      } 
     } 
     base.OnException(filterContext); 
    } 
} 

, 그것은 로컬 때 디버깅 완벽하게 작동하고, 로컬 서버에서 페이지를 볼 때,하지만 난에 확인 동일한 URL을 볼 경우 서버를 원격으로 실행하면 내부 서버 오류 (500)가 반환됩니다.

아이디어가 있으십니까?

+0

나는 그것을보기 _404 공유 폴더에 있고 전체보기 및 속성 "콘텐츠"로 표시됩니다 (부분 뷰는 일반적으로 밑줄로 시작하기 때문에 나는이 질문이)입니다 걸릴? – viperguynaz

+0

실제로 공유되어 있으며 콘텐츠로 표시되어 있습니다. _Layout.cshtml에서 상속받은 페이지입니다. 공유 자원 이름 지정에 따라 _ – NKCSS

답변

2

web.config (및 배포 된 변환)에서 customeErrors 속성이 올바르게 구성되어 있는지 확인하고 전역 필터 HandleError를 주석 처리하십시오.

public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
{ 
    //filters.Add(new HandleErrorAttribute()); 
} 
+0

감사합니다. 그거였다. HandleErrorAttribute가 어떻게 작동하는지 살펴 봐야 할 것 같아요. 웹 서버에서 사이트를 로컬에서 볼 때와이 속성에 대해 외부에서 동작이 다를 수 있다는 것이 이상하다는 것을 알았습니다. – NKCSS

+0

다음은 시작하기 좋은 장소입니다. http://msdn.microsoft.com/en-us/library/system.web.mvc.handlerorattribute(v=vs.108).aspx 기본 web.config를 사용하는 경우 그것은 customErrors mode = "Off"를 포함하고 일반적으로 web.Release.config에 의해 customErrors와 같은 것으로 변환됩니다. mode = "On"defaultRedirect = "Error"이것은 다른 동작을 보게되는 이유입니다. – viperguynaz

0

아마도 _404 뷰 파일을 서버에 배포하는 것을 잊었을 수 있습니다.

+0

Nope; 내가 말했듯이; 서버에서 404 페이지를 볼 때 맞춤 404 페이지와 함께 작동합니다. – NKCSS