WebForm 在 Global.asax 中捕获全局异常
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }
以上是关于WebForm 在 Global.asax 中捕获全局异常的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET:在 global.asax 中未捕获安全异常
为啥 global.asax Application_Error 方法不能捕获 ASMX 服务抛出的异常?
ASP.NET MVC中注册Global.asax的Application_Error事件处理全局异常
从 global.asax 中的 Application_BeginRequest 重定向到一个动作