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>&nbsp;&nbsp;" + DateTime.Now.ToString() + "<br/><br/>");
                sb.Append("<b>错误描述:</b>&nbsp;&nbsp;" + ex.Message.Replace("\r\n", "") + "<br/><br/>");
                sb.Append("<b>错误对象:</b>&nbsp;&nbsp;" + ex.Source + "<br/><br/>");
                sb.Append("<b>错误页面:</b>&nbsp;&nbsp;" + HttpContext.Current.Request.Url + "<br/><br/>");
                sb.Append("<b>浏览器IE:</b>&nbsp;&nbsp;" + HttpContext.Current.Request.UserAgent + "<br/><br/>");
                sb.Append("<b>服务器IP:</b>&nbsp;&nbsp;" + HttpContext.Current.Request.ServerVariables.Get("Local_Addr").ToString() + "<br/><br/>");
                sb.Append("<b>方法名称:</b>&nbsp;&nbsp;" + ex.TargetSite.ToString() + "<br/><br/>");
                sb.Append("<b>C#类名称:</b>&nbsp;&nbsp;" + ex.TargetSite.DeclaringType.ToString() + "<br/><br/>");
                sb.Append("<b>成员变量:</b>&nbsp;&nbsp;" + 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来记录异常消息的,显示完之后立即清除,看一下效果:

 本文转自博客园张占岭(仓储大叔)的博客,原文链接:EF架构~在global.asax里写了一个异常跳转,不错!,如需转载请自行联系原博主。

目录
相关文章
软件设计与架构复杂度问题之throws new BizException("capacity over limit");”异常如何解决
软件设计与架构复杂度问题之throws new BizException("capacity over limit");”异常如何解决
|
Android开发 iOS开发
Android项目架构设计问题之将隐式跳转的逻辑进行抽象和封装如何解决
Android项目架构设计问题之将隐式跳转的逻辑进行抽象和封装如何解决
144 0
架构-----页面之间实现跳转,Vue3如何实现快速跳转页面,将事件绑定在从你开始跳转的页面
架构-----页面之间实现跳转,Vue3如何实现快速跳转页面,将事件绑定在从你开始跳转的页面
|
消息中间件 传感器 机器学习/深度学习
「物联网架构」MQTT 传感器数据流异常检测的深度学习KSQL UDF
「物联网架构」MQTT 传感器数据流异常检测的深度学习KSQL UDF
378 16
|
JSON 运维 负载均衡
【服务网格架构】Envoy架构概览(6):异常检测
【服务网格架构】Envoy架构概览(6):异常检测
|
JSON 运维 负载均衡
Envoy架构概览(6):异常检测
Envoy架构概览(6):异常检测
|
存储 负载均衡 安全
MIPS架构深入理解6-异常和中断
MIPS架构深入理解6-异常和中断
EMQ
|
人工智能 运维 Kubernetes
EMQ「边缘-工厂-云」异常事件告警处理架构
EMQ云边协同的事件异常处理解决方案能够对设备异常事件做出快速响应和高效处理,并最大化利用整个系统的硬件和软件资源,助力工厂实现智能化、数字化转型。
EMQ
347 0
EMQ「边缘-工厂-云」异常事件告警处理架构
|
架构师 Java
【Java 异常,15套Java架构师百度云
【Java 异常,15套Java架构师百度云
【Java 异常,15套Java架构师百度云

热门文章

最新文章