EF架构~在global.asax里写了一个异常跳转,不错!
一般地,网站出现异常后,我们会通过设置web.config的方法来实现友好页的显示,这个方法比较常用,但捕捉的信息不是很具体,在程序测试阶段,我们可以通过global.asax来实现友好的,详细的异常信息的显示,下面来看一下。
WEB.CONFIG里的实现:
<customErrors mode="On"> <error statusCode="404" redirect="/error/index404"/> <error statusCode="500" redirect="/error/inde500"/> </customErrors>-
而这种方式不能把具体出错的信息显示出来,这在网站运营阶段是可以接受的,但在网站测试阶段是不可以的,下面看看我的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>系统出现如下错误:</b><br/><br/>"); sb.Append("<b>发生时间:</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>错误页面:</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>方法名称:</b> " + ex.TargetSite.ToString() + "<br/><br/>"); sb.Append("<b>C#类名称:</b> " + ex.TargetSite.DeclaringType.ToString() + "<br/><br/>"); sb.Append("<b>成员变量:</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>
这种方式是通过cookies来记录异常消息的,显示完之后立即清除,看一下效果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2012-10-22 EF架构~一个规范,两个实现(续)~性能可以接受的批量增删改操作