在ASP
設置HandleError屬性
可以通過設置下面這些屬性來更改HandleErrorAttribute特性的默認處理:
ExceptionType
View
Master
Order
指定Order屬性
如果某個Action設置了多個HandleErrorAttribute
應用到Controller上的過濾器將會自動應用到該Controller的所有Action上
如果Controller和Action都應用了HandleErrorAttribute
對於相同Order屬性的過濾器
如果沒有指定Order屬性
如果有多個過濾器可適用
在View中獲取異常信息
ASP
ActionName:目標Action方法的名稱
ControllerName:目標Controller的名稱
Exception:異常對象
啟用自定義錯誤處理
下面我們來開啟用於HandleErrorAttribute過濾器的自定義錯誤處理
<system
<customErrors mode=
</system
處理Error視圖中的錯誤
有時候在Error視圖中也會發生錯誤
<system
<customErrors mode=
<error statusCode=
</customErrors>
</system
示例程序
下面的示例說明了如何對Controller和Action應用HandleErrorAttribute特性來自定義異常處理
示例中HomeController有一個名為ThrowException的Action方法
而ThrowNotImplemented方法則應用了設有兩個參數的HandleErrorAttribute
Controller的HandleErrorAttribute則設置了Order參數為
同時示例給出了視圖CustomErrorView和CustomError
視圖CustomErrorView顯示異常的信息
視圖Index上有兩個鏈接
HomeController類
[HandleError(Order =
public class HomeController : Controller
{
public ActionResult Index()
{
ViewData[
return View();
}
public ActionResult About()
{
return View();
}
[HandleError]
public ActionResult ThrowException()
{
throw new ApplicationException();
}
[HandleError(View =
public ActionResult ThrowNotImplemented()
{
throw new NotImplementedException();
}
}
視圖 CustomErrorView
<asp:Content ID=
CustomErrorView
</asp:Content>
<asp:Content ID=
<h
<p>
Controller: <%=((HandleErrorInfo)ViewData
</p>
<p>
Action: <%=((HandleErrorInfo)ViewData
</p>
<p>
Message: <%=((HandleErrorInfo)ViewData
</p>
<p>
Stack Trace: <%=((HandleErrorInfo)ViewData
</p>
</asp:Content>
視圖 Index
<asp:Content ID=
Home Page
</asp:Content>
<asp:Content ID=
<h
<%= Html
<br /><br />
<%= Html
</asp:Content>
母版頁 CustomError
<%@ Master Language=
<!DOCTYPE html PUBLIC
<html xmlns=
<head runat=
<title><asp:ContentPlaceHolder ID=
<link stylesheet
<style type=
body
{
background
color: #
}
</style>
</head>
<body class=
<div class=
<div id=
<div id=
<h
</div>
<div id=
<% Html
</div>
<div id=
<ul id=
<li><%= Html
<li><%= Html
</ul>
</div>
</div>
<div id=
<asp:ContentPlaceHolder ID=
<div id=
</div>
</div>
</div>
</body>
</html>
From:http://tw.wingwit.com/Article/program/net/201311/11950.html