2013-09-24 172 views
3

我有一個MVC 4項目,我已經實現了HandleError屬性,以在發生任何異常時顯示我自己的自定義錯誤頁面。MVC HandleError - 獲取異常詳細信息

這是我的錯誤控制器:

Public Class ErrorController 
    Inherits BaseController 

    Function Index() As ActionResult 
     Return View() 
    End Function 
End Class 

但是,我無法弄清楚如何獲得訪問異常消息和堆棧跟蹤控制器或視圖。我讀過它可以通過模型訪問,但你如何訪問模型?

回答

2

誤差應類型的System.Web.Mvc.HandleErrorInfo

的觀點看起來是這樣的:

@model HandleErrorInfo 
@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
    ViewBag.Title = "Error"; 
} 
<section id="error-page"> 
    <div> 
     <h1>@ViewBag.Title</h1> 
     <div class="alert alert-error"> 
      An unexpected Error has occured.<br /> 
     </div> 
    </div> 
    @if (Model != null && HttpContext.Current.IsDebuggingEnabled) 
    { 
     <div> 
      <p> 
       <b>Exception:</b> @Model.Exception.Message<br /> 
       <b>Controller:</b> @Model.ControllerName<br /> 
       <b>Action:</b> @Model.ActionName 
      </p> 
      <div> 
       <pre> 
        @Model.Exception.StackTrace 
       </pre> 
      </div> 
     </div> 
    } 
</section> 

如果你想知道如何得到異常模型在兩個AJAX &非Ajax通話看看這個博客帖子: http://blog.christopheargento.net/2012/06/14/unify-exception-handling-between-ajax-and-non-ajax-requests-in-asp-net-mvc/

+0

什麼是VB中的第一行代碼? @model HandleErrorInfo –

+0

我根本不知道VB。但是在一個aspx中它會像<%@ Page Language =「C#」Inherits =「System.Web.Mvc.ViewPage 」%> – Sam7

+0

@ModelType System.Web.Mvc.HandleErrorInfo – Sam7

0

您需要設置ModelType在你的錯誤觀點(是@model在C#剃刀):

@ModelType HandleErrorInfo 
+0

你知道如何在VB.NET剃鬚刀中關鍵嗎? –

+0

@JeffStock這是VB.NET('ModelType')。 – mattytommo