EF架(jia)構(gou)~在global.asax里寫了(le)一個異常跳轉,不錯!
一般地,網(wang)站(zhan)出現(xian)異常后(hou),我們會通過設(she)置web.config的(de)方法來實現(xian)友好頁的(de)顯示(shi),這個方法比較(jiao)常用,但(dan)捕捉的(de)信(xin)息不是很具體,在程(cheng)序(xu)測試階段,我們可以通過global.asax來實現(xian)友好的(de),詳細的(de)異常信(xin)息的(de)顯示(shi),下面來看一下。
WEB.CONFIG里的實現:
<customErrors mode="On"> <error statusCode="404" redirect="/error/index404"/> <error statusCode="500" redirect="/error/inde500"/> </customErrors>-
而這種方式不(bu)能把具體出(chu)錯的信息顯(xian)示出(chu)來,這在網(wang)站運(yun)營階段是(shi)可以(yi)接受的,但在網(wang)站測(ce)試階段是(shi)不(bu)可以(yi)的,下面看看我的global.asax方法:
protected void Application_Error(object sender, EventArgs e) { Exception ex = this.Context.Server.GetLastError(); if (ex != null) { StringBuilder sb = new StringBuilder(); sb.Append("<b>系(xi)統出(chu)現如下(xia)錯誤:</b><br/><br/>"); sb.Append("<b>發(fa)生時間:</b> " + DateTime.Now.ToString() + "<br/><br/>"); sb.Append("<b>錯誤描述:</b> " + ex.Message.Replace("\r\n", "") + "<br/><br/>"); sb.Append("<b>錯誤對象:</b> " + ex.Source + "<br/><br/>"); sb.Append("<b>錯(cuo)誤頁面:</b> " + HttpContext.Current.Request.Url + "<br/><br/>"); sb.Append("<b>瀏覽器IE:</b> " + HttpContext.Current.Request.UserAgent + "<br/><br/>"); sb.Append("<b>服務器IP:</b> " + HttpContext.Current.Request.ServerVariables.Get("Local_Addr").ToString() + "<br/><br/>"); sb.Append("<b>方法(fa)名稱(cheng):</b> " + ex.TargetSite.ToString() + "<br/><br/>"); sb.Append("<b>C#類(lei)名稱:</b> " + ex.TargetSite.DeclaringType.ToString() + "<br/><br/>"); sb.Append("<b>成(cheng)員(yuan)變量(liang):</b> " + ex.TargetSite.MemberType.ToString() + "<br/><br/>"); Server.ClearError(); VCommons.Http.CookieHelper.Write("Http_Errors", VCommons.Utils.UrlEncode(sb.ToString())); System.Web.HttpContext.Current.Response.Redirect("/Error/Index"); } }
Error下的Index內容如下:
public ActionResult Index(string message) { ViewBag.Message = VCommons.Utils.UrlDecode(VCommons.Http.CookieHelper.Read("Http_Errors")); VCommons.Http.CookieHelper.Remove("Http_Errors"); return View(); }
<div style="border: 2px solid #ddd; padding: 5px; margin: 5px;"> <h3><span style="color: Red">錯誤信息詳細內容</span></h3> <p style="padding: 5px; margin: 5px;font-size:12px;">@Html.Raw(ViewBag.Message)</p> </div>
這(zhe)種(zhong)方式(shi)是通過cookies來記錄異(yi)常(chang)消息的,顯示(shi)完(wan)之后立(li)即清除,看一下效果(guo):