2014-11-08 2 views
0

등록 양식의 유효성을 검사 할 때 발생하는 오류를 처리하기 위해 사용자 지정 오류 페이지를 만들려고합니다. 저는 C# ASP.NET MVC 4를 사용하고 있습니다. 여러 가지 방법으로 시도했는데 궁극적으로 다양한 오류가 발생했습니다. 표준 오류를 사용하면 시스템이 제대로 작동하지만 사용자 정의 오류는 작동하지 않습니다.ASP.NET MVC4 사용자 지정 예외 처리 C#

단순히 <customErrors mode="on" />을 시도하면이 오류가 발생합니다.

런타임 오류

설명 : 서버에서 응용 프로그램 오류가 발생했습니다. 이 응용 프로그램에 대한 현재 사용자 지정 오류 설정을 사용하면 응용 프로그램 오류 의 세부 정보를 볼 수 없습니다.

<customErrors mode="on" defaultRedirect="~/Views/Shared/Error.cshtml" /> 를 사용하기 또는 사용자 정의 컨트롤러를 사용하여뿐만 아니라 <customErrors mode="On" defaultRedirect="~/Error' />이 오류를

런타임 오류

설명을받을 : 귀하의 요청을 처리하는 동안 예외가 발생했습니다. 또한 첫 번째 예외에 대해 사용자 지정 오류 페이지를 실행하는 동안 또 다른 예외가 발생했습니다. 요청이 종료되었습니다. 여기

[HttpPost] 
     public ActionResult Confirm(User data) 
     { 
      Boolean error = false; 
      User newUser = new User(data); 

      if (ModelState.IsValid) 
      { 
       foreach (User u in _users) 
       { 
        if (newUser.email.Equals(u.email)) 
        { 
         error = true; 
        } 
       } 
       if (error == true) 
       { 
        throw new Exception("That email already exists!"); 
       } 
       _users.Add(newUser); 
      } 
      else 
      { 
       throw new Exception("Invalid data entry, please try again."); 
      } 
       return RedirectToAction("Login", "Countdown"); 
     } 

Errors.cshtml

@model System.Web.Mvc.HandleErrorInfo 

<div class="container"> 
     <div class="row"> 
      <div class="col-xs-1"> 
       <img src="http://i1382.photobucket.com/albums/ah259/rogha189/running-stopwatch-1_zps95faa3c7.jpg" "></div> 
      <div class="col-xs-1 col-xs-offset-1"> 
       <h3>An Error has occurred.</h3> 

      </div> 
     </div> 
     <div class="row"> 
      <div class="col-xs-6 col-xs-offset-3"> 
       @if (Model != null) 
        { 
         <p>@Model.Exception.Message</p> 
        } 
      </div> 
     </div> 
+1

"첫 예외에 대해 사용자 지정 오류 페이지를 실행하는 동안 또 다른 예외가 발생했습니다." 디버깅을 시도 했습니까? 실패 할 수없는 페이지를 설정하려 했습니까 (즉, '모델'을 전혀 사용하지 않거나 필요한 모든 null 검사를 수행하지 않았습니다)? –

+0

오류 컨트롤러는 어떻게 생겼습니까? 'HandleErrorInfo' 모델을 올바르게 빌드하고 그것을 뷰에 전달하고 있습니까? –

답변

0

당신은 '런타임 오류를 얻고있다 (오류 컨트롤러가 유사한 뷰를 돌려줍니다) 컨트롤러에서 해당 코드 'Model.Exception의 null 값은'Errors.cshtml '페이지의입니다. 모델과 함께 에 null 값을 확인하십시오. Model.Exception을 사용하기 전에이 값을 확인하십시오.

0

어디에서나 예외를 기록하려고하십니까? 아니면 오류 페이지로 리디렉션하고 맞춤 메시지를 표시하는 것이 목적입니까?