鍦?a href="http://www.itstrike.cn/Home/AspnetmvcSpecial" title="ASP.NET MVC">ASP.NET MVC涓?鎴戜滑鍙互浣跨敤HandleErrorAttribute鐗规€ф潵鍏蜂綋鎸囧畾濡備綍澶勭悊Action鎶涘嚭鐨勫紓甯?鍙鏌愪釜Action璁剧疆浜?HandleErrorAttribute鐗规€?閭d箞榛樿鐨?褰撹繖涓狝ction鎶涘嚭浜嗗紓甯告椂MVC灏嗕細鏄剧ずError瑙嗗浘,璇ヨ鍥句綅浜巭/Views /Shared鐩綍涓?
鍙互閫氳繃璁剧疆涓嬮潰杩欎簺灞炴€ф潵鏇存敼HandleErrorAttribute鐗规€х殑榛樿澶勭悊:
濡傛灉鏌愪釜Action璁剧疆浜嗗涓狧andleErrorAttribute,Order灞炴€у彲浠ョ敤鏉ョ‘瀹氫娇鐢ㄥ摢涓繃婊ゅ櫒.鍏跺€煎彲浠ヨ缃负浠?1(鏈€楂樹紭鍏堢骇)鍒颁换浣曟鏁存暟涔嬮棿鐨勬暣鏁版潵鏍囪瘑鍏朵紭鍏堢骇,鍊艰秺澶?浼樺厛绾у埆瓒婁綆.Order灞炴€ч伒寰互涓嬭鍒?
ASP.NET MVC妗嗘灦灏嗗紓甯镐俊鎭瓨鍌ㄥ湪ViewDataDictionary涓潵浼犻€掔粰Error瑙嗗浘,璇iewDataDictionary鐨凪odel灞炴€у嵆鏄疎xceptionContext绫荤殑涓€涓疄渚?杩欎釜ViewData鏈変笅闈㈠嚑涓敭:
ActionName:鐩爣Action鏂规硶鐨勫悕绉?br /> ControllerName:鐩爣Controller鐨勫悕绉?br /> Exception:寮傚父瀵硅薄.
涓嬮潰鎴戜滑鏉ュ紑鍚敤浜嶩andleErrorAttribute杩囨护鍣ㄧ殑鑷畾涔夐敊璇鐞?鎵撳紑绋嬪簭鐨刉eb.config鏂囦欢,鍦╯ystem.web鑺備腑鍔犲叆涓€涓猚ustomErrors鍏冪礌,濡備笅鎵€绀?/p>
鏈夋椂鍊欏湪Error瑙嗗浘涓篃浼氬彂鐢熼敊璇?杩欐椂ASP.NET灏嗕細鏄剧ず鍏堕粯璁ょ殑閿欒椤甸潰(榛勫簳绾㈠瓧),涓轰簡閬垮厤杩欑鎯呭喌鐨勫嚭鐜?鎴戜滑鍦╓eb.config鏂囦欢鐨刢ustomErrors鑺備腑鏉ヨ嚜瀹氫箟閿欒椤甸潰,濡備笅:
涓嬮潰鐨勭ず渚嬭鏄庝簡濡備綍瀵笴ontroller鍜孉ction搴旂敤HandleErrorAttribute鐗规€ф潵鑷畾涔夊紓甯稿鐞?
绀轰緥涓璈omeController鏈変竴涓悕涓篢hrowException鐨凙ction鏂规硶,鍦ㄨAction涓皢浼氭姏鍑轰竴涓?ApplicationException绫诲瀷鐨勯敊璇?杩欎釜Action搴旂敤浜咹andleErrorAttribute,浣嗘槸娌℃湁璁剧疆浠讳綍鍙傛暟.褰撹 Action鎵ц鏃跺皢浼氭姏鍑轰竴涓紓甯?鏄剧ず榛樿鐨凟rror瑙嗗浘.
鑰孴hrowNotImplemented鏂规硶鍒欏簲鐢ㄤ簡璁炬湁涓や釜鍙傛暟鐨凥andleErrorAttribute,View鍙傛暟鎸囧畾浜嗚嚜瀹氫箟鐨?Error瑙嗗浘鍚嶇О:CustomErrorView,ExceptionType鍙傛暟鎸囧畾浜嗚杩囨护鍣ㄤ粎澶勭悊ThrowNotImplemented绫诲瀷 鐨勫紓甯?
Controller鐨凥andleErrorAttribute鍒欒缃簡Order鍙傛暟涓?,鎰忓懗鐫€璇ヨ繃婊ゅ櫒鍙細琚湪Index鎴朅bout鏂规硶浜х敓寮傚父鏃舵墽琛?
鍚屾椂绀轰緥缁欏嚭浜嗚鍥綜ustomErrorView鍜孋ustomError.Master鐨勫唴瀹?
瑙嗗浘CustomErrorView鏄剧ず寮傚父鐨勪俊鎭?姣斿鎶涘嚭寮傚父鐨凜ontroller鍜孉ction鐨勫悕绉?寮傚父鐨勫唴瀹逛互鍙婂爢鏍堣窡韪俊鎭?
瑙嗗浘Index涓婃湁涓や釜閾炬帴,鍒嗗埆鎸囧悜浜員hrowException鍜孴hrowNotImplemented涓や釜Action.
HomeController绫?/p>
瑙嗗浘 CustomErrorView
瑙嗗浘 Index
姣嶇増椤?span id="ctl00_WikiContent_ctl00_HeaderTitle"> CustomError.Master
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title>
<link href="http://www.cnblogs.com/Content/Site.css" rel="stylesheet" type="text/css" />
<style type="text/css">
body.error
{
background-color: Maroon;
color: #696969;
}
</style>
</head>
<body class="error">
<div class="page">
<div id="header">
<div id="title">
<h1>A Custom Error Occurred</h1>
</div>
<div id="logindisplay">
<% Html.RenderPartial("LogOnUserControl"); %>
</div>
<div id="menucontainer">
<ul id="menu">
<li><%= Html.ActionLink("Home", "Index", "Home")%></li>
<li><%= Html.ActionLink("About", "About", "Home")%></li>
</ul>
</div>
</div>
<div id="main">
<asp:ContentPlaceHolder ID="MainContent" runat="server" />
<div id="footer">
</div>
</div>
</div>
</body>
</html>