2013-09-24 132 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