WebForm 在 Global.asax 中捕获全局异常

 1         /// <summary>
 2         /// 捕获全局异常
 3         /// </summary>
 4         /// <param name="sender">sender</param>
 5         /// <param name="e">e</param>
 6         protected void Application_Error(Object sender, EventArgs e)
 7         {
 8             Exception ex = Server.GetLastError().GetBaseException();
 9             string ip = Request.ServerVariables.Get("HTTP_X_FORWARDED_FOR") == null ?
10                 Request.ServerVariables.Get("Remote_Addr").ToString().Trim() :
11                 Request.ServerVariables.Get("HTTP_X_FORWARDED_FOR").ToString().Trim();
12             string logpath = Server.MapPath("~/Log/" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt");
13             StringBuilder builder = new StringBuilder();
14             builder.AppendLine(string.Format("==========  {0} Application_Error BEGIN ==========", DateTime.Now));
15             builder.AppendLine("Ip:" + ip);
16             builder.AppendLine("浏览器:" + Request.Browser.Browser.ToString());
17             builder.AppendLine("浏览器版本:" + Request.Browser.MajorVersion.ToString());
18             builder.AppendLine("操作系统:" + Request.Browser.Platform.ToString());
19             builder.AppendLine("页面:" + Request.Url.ToString());
20             builder.AppendLine("错误信息:" + ex.Message);
21             builder.AppendLine("错误源:" + ex.Source);
22             builder.AppendLine("异常方法:" + ex.TargetSite);
23             builder.AppendLine("堆栈信息:" + ex.StackTrace);
24             builder.AppendLine("==========  Application_Error END  ===================");
25
26             lock (logpath)
27             {
28                 try
29                 {
30                     using (var writer = new StreamWriter(logpath, true))
31                     {
32                         writer.Write(builder.ToString());
33                     }
34                 }
35                 catch
36                 {
37                     // 防止写文件时,文件被人为打开无法写入等
38                     // 记录日志报错不做处理,不应影响用户继续使用
39                 }
40             }
41
42             Server.ClearError();
43             Response.Redirect("~/Error.htm");
44         }
时间: 2024-10-14 00:42:36

WebForm 在 Global.asax 中捕获全局异常的相关文章

在C#代码中应用Log4Net(四)在Winform和Web中捕获全局异常

毕竟人不是神,谁写的程序都会有bug,有了bug不可怕,可怕的是出错了,你却不知道错误在哪里.所以我们需要将应用程序中抛出的所有异常都记录起来,不然出了错,找问题就能要了你的命.下面我们主要讨论的是如何捕捉全局的异常.基本上在winform或web中捕获全局异常的思路都是一样的,在全局的应用程序对象中添加异常捕获的代码,并写入日志文件中. 一.在Winform程序中捕获全局异常 在winfrom中我们需要了解Application对象中的两个事件 ①Application.ThreadExcep

spring boot2.0+中添加全局异常捕获

1.添加自定义异常,继承RuntimeException,为什么继承RuntimeException呢?是因为我们的事务在RuntimeException异常下会发生回滚. 1 public class BusinessException extends RuntimeException{ 2 3 public BusinessException(String code, String msg){ 4 this.code = code; 5 this.msg = msg; 6 } 7 8 pri

Android应用捕获全局异常自定义处理

[2016-06-30]最新的全局异常处理DRCrashHandler已经集成在DR_support_lib库中 具体请看: https://coding.net/u/wrcold520/p/DR_support_lib/git/tree/master [2016-06-28] 1 增加log4j的支持[2016-06-28] 2 增加全局异常处理(可自定义程序崩溃提示消息,自定义发送错误报告到服务器)[2016-06-28] 3 增加两种应用退出方法:① appExit,结束掉所有Acitiv

在Asp.Net的Global.asax中Application_Error跳转到自定义错误页无效的办法

在开发Asp.Net系统的时候,我们很多时候希望系统发生错误后能够跳转到一个自定义的错误页面,于是我们经常会在Global.asax中的Application_Error方法中使用Response.Redirect方法跳转到自定义错误页,但有时候(特别是当站点部署到IIS后)Application_Error方法中使用Response.Redirect方法会失效,当Asp.Net发生异常错误后还是显示出来的是Asp.Net的默认错误黄页.其根本原因是尽管我们在Application_Error方

Android -- 使用UncaughtExceptionHandler捕获全局异常

在集成了统计SDK(友盟统计,百度统计等)之后,有一个非常有利于测试的功能:错误分析!此功能能够将程序在运行中碰到的崩溃(runtimeException)问题反馈到服务器,帮助开发者改善产品,多适配机器. 然而在公司android开发中不集成这些SDK,那应该怎么实现这样的功能呢?下面让我们来看下如何使用UncaughtExceptionHandler来捕获异常. 首先实现创建一个类,实现UncaughtExceptionHandler接口.代码如下: public class CrashHa

捕获全局异常UncaughtExceptionHandler

标签:捕获全局异常,UncaughtExceptionHandler ========================网上相关博客======================== 参考:http://blog.csdn.net/jdsjlzx/article/details/7606423 Android自定义捕获Application全局异常 http://git.oschina.net/oschina/android-app 大家可以参考. 大家都知道,现在安装Android系统的手机版本和

springboot捕获全局异常和配置多数据源

目录 配置多数据源 写两个数据源的配置类. @(springboot捕获全局异常和配置多数据源) 捕获全局异常是在项目运行期间如果调用的某一个方法出现了运行时异常,则会捕获,并且给出回馈. 首先需要建一个包,包里新建一个捕获异常类GlobalExceptionHandler.前提是springboot的启动类的扫描注解ComponentScan()要扫描到. /** * 用于捕获全局异常 */ @ControllerAdvice//控制器切面 public class GlobalExcepti

Android应用源码之捕获全局异常

Android应用源码之捕获全局异常 本项目就是一个简单的全局异常捕捉例子,捕捉到异常以后可以把异常信息写入文件以供后来分析或者用友好的方式进行提示后再退出程序. 下载地址:http://www.devstore.cn/code/info/630.html

如何在Global.asax中判断是否是ajax请求

今天在一个应用场景中需要在Global.asax中判断一个请求是否是ajax请求,而在ASP.NET MVC中已经提供了一个现成的扩展方法IsAjaxRequest: namespace System.Web.Mvc { public static class AjaxRequestExtensions { public static bool IsAjaxRequest(this HttpRequestBase request); } } 但这个扩展方法只是针对HttpRequestBase,