2014-11-06 1 views
2

ASP.NET MVC 웹 응용 프로그램에서 응용 프로그램에 캐치 오류가 발생하면 오류보기가 표시됩니다. 의 Web.config에서 :오류보기가 있지만 오류 페이지를 찾을 수 없습니다. ASP.NET MVC

<customErrors mode="On" defaultRedirect="~/Error" /> 

컨트롤러 :

public class ErrorController : BaseController 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 
} 

그리고 폴더보기/오류, Index.cshtml에서 볼 수 있습니다. 그 내용은 제가 직면하고있는 문제에 대해 중요하지 않습니다.

예를 들어 404 오류가있는 경우 모두 정상적으로 작동합니다. - 오류 Index.cshtml 페이지 (URL은 http://localhost:51099/Error?aspxerrorpath=/Home/ssad이며 OK)가 표시되고 응용 프로그램의 오류 로그에 404 오류가보고됩니다. 그러나 다른 오류가있는 경우 (예 : 응용 프로그램을 통해 존재하지 않는 폴더에 파일을 만들려고 할 때) 오류 Index.cshtml보기가 나타납니다 (URL은 http://localhost:51099/Error?aspxerrorpath=/AdminDataExport/ResponseMatrix인데 괜찮습니다). 두 가지 오류가보고됩니다 - 폴더가 OK이고, 다른 인을 찾을 수 없습니다 하나를 내가있을 때

The view 'Error' or its master was not found or no view engine supports 
the searched locations. The following locations were searched: 
~/Views/AdminDataExport/Error.aspx 
~/Views/AdminDataExport/Error.ascx 
~/Views/Shared/Error.aspx 
~/Views/Shared/Error.ascx 
~/Views/AdminDataExport/Error.cshtml 
~/Views/AdminDataExport/Error.vbhtml 
~/Views/Shared/Error.cshtml 
~/Views/Shared/Error.vbhtml 

는 왜이 위치에서 오류 파일에 대한 응용 프로그램 검색은 ErrorController 및 해당보기

정의는 무엇입니까? 왜이 두 번째 오류는 어떤 경우에는 나타나지만 어떤 경우에는 나타나지 않습니까?

두 번째 오류를 수정하고 싶습니다. Views/Shared에 Error.cshtml 파일을 추가하여 수정하려고했습니다. 결과는 두 번째 오류가 내가 원하는 것을 기록하지 않지만 첫 번째 오류 - http://localhost:51099/AdminDataExport/ResponseMatrix과 URL이 다르므로 http://localhost:51099/Error?aspxerrorpath=/AdminDataExport/ResponseMatrix이되기를 원합니다. 이것이 가능한가?

+0

지금 코드를 작성하고 다른 접근 방식으로 작업 할 수 있다면이 질문에서 내 대답을 확인하십시오. 도움이 될 수 있습니다 -> http://stackoverflow.com/questions/26357340/asp-mvc-handleerror-attribute-doesnt -work/26359455 # 26359455 – SBirthare

+0

@SBirthare 귀하의 솔루션을 구현했으며 두 가지 질문이 있습니다. 하나는'controller.ViewData.Model = new HandleErrorInfo (ex, currentController, currentAction);'줄에 있습니다. "예"에서 'NotNull'속성으로 표시된 엔터티에 'null'할당이 가능하다는 경고가 나타납니다. 두 번째는 오류가 발생하면 렌더링 된 페이지가 아니라 내 오류 페이지의 소스 코드 (HTML)를 제공한다는 것입니다. 비슷한 경험이 있습니까? 어떻게 이런 상황을 해결할 수 있을까요? – kiriz

+0

이 줄에 ex에 대한 추가 검사를 추가하지 않았고 해당 조건을 테스트하지 않았습니다. 수표를 추가 할 수 있습니다. 두 번째 질문에서이 메서드는 오류 코드를 기반으로 ErrorController에 대한 작업을 호출합니다. 그 행동에서 무엇을 돌려 줄지 결정할 수 있습니다. 내 경우에는 해당보기를 반환합니다. 희망이 도움이됩니다. – SBirthare

답변

0

아하! 답을 찾을 수

...

MVC는 다음 코드로 FilterConfig 클래스를 추가합니다.

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

그냥 제거하면 오류가 사라집니다.

관련 문제