2014-11-08 165 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

任何機會,「另外,執行第一個異常的自定義錯誤頁時發生另一個異常。」?你有沒有試過調試?您是否嘗試過設置無法失敗的頁面(即根本不使用'Model'或在所有必要的空值檢查中使用'''')? – 2014-11-08 03:18:39

+0

你的錯誤控制器是怎樣的?它是否正確構建'HandleErrorInfo'模型並將其傳遞給視圖? – 2014-11-08 11:08:35

回答

0

你所得到的「運行時錯誤'爲'Errors.cshtml'頁面中Model.Exception的空值。隨着型號檢查爲空值Model.Exception之前使用它。

0

您是否試圖在任何地方記錄異常,或者您的目的只是重定向到錯誤頁面並顯示一些自定義消息?