博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
项目中报错邮件方法
阅读量:6079 次
发布时间:2019-06-20

本文共 4188 字,大约阅读时间需要 13 分钟。

  项目中使用报错邮件的重要性,O(∩_∩)O~嘿嘿...重要性我就不多说,只说一点:可以帮助你快速定位项目中没有被捕获的BUG...这个报错邮件的方法一般都是添加在一个单独的类(例如BaseClass)中,给取数据的接口,登陆,详情页,...这些要害"部门"使用,这些页面的.cs文件都继承至这个类(BaseClass).

View Code
1 override protected void OnInit(EventArgs e) 2     { 3         InitializeComponent(); 4         base.OnInit(e); 5     } 6  7     private void InitializeComponent() 8     { 9         Error += Page_Error;10     }11 12     void Page_Error(object sender, EventArgs e)13     {14         //可以添加一个缓存15         string CacheKey = "errorinfo";16         try17         {18             Exception ex = Server.GetLastError();19             string errMsg = ex.Message;20             string param = string.Empty;21             string url = HttpContext.Current.Request.Url.Authority + HttpContext.Current.Request.Url.AbsolutePath + errMsg;22 23             Hashtable ErrorTable = HttpContext.Current.Cache[CacheKey] as Hashtable;24             if (ErrorTable == null)25             {26                 ErrorTable = new Hashtable();27                 HttpContext.Current.Cache.Insert(CacheKey, ErrorTable, null, DateTime.Now.AddHours(1), System.Web.Caching.Cache.NoSlidingExpiration);28             }29             if (ErrorTable.Contains(url)) 30             { 31                 return;32             }33             else34             {35                 //没找到36                 ErrorTable.Add(url, errMsg);37             }38 39             if (Request.Form != null)40                 param += Environment.NewLine + "接收Form:" + Server.UrlDecode(Request.Form.ToString());41 42             if (Request.QueryString != null)43                 param += Environment.NewLine + "接收QueryString:" + Server.UrlDecode(Request.QueryString.ToString());44 45             if (Request.UrlReferrer != null)46             {47                 errMsg += Environment.NewLine + "来源:" + Request.UrlReferrer.AbsoluteUri;48             }49 50             //这个收件人邮箱可以在配置文件中配置: 
51 //string mailTo = ConfigurationManager.AppSettings["EmailTo"];52 //也可以直接写:53 string mailTo = "123@126.com,456@126.com";54 if (string.IsNullOrEmpty(mailTo))55 {56 mailTo = "123@soufun.com";57 }58 59 string[] arrMailTo = mailTo.Split(',');60 //这个地方的发件人,一写成你项目的邮箱地址..(也可以随意配一个你知道的邮箱地址...O(∩_∩)O~)61 MailMessage mm = new MailMessage(new MailAddress("issosystem@126.com"), new MailAddress(arrMailTo[0]));62 int arrLength = arrMailTo.Length;63 if (arrLength > 0)64 {65 for (int i = 0; i < arrLength; i++)66 {67 mm.To.Add(new MailAddress(arrMailTo[i]));68 }69 }70 71 mm.Subject = HttpContext.Current.Request.ServerVariables["Local_addr"] + " " + Request.Url.Authority + " 项目报错信息";//72 StringBuilder sbBody = new StringBuilder("发生时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));73 sbBody.Append(Environment.NewLine + "发生异常页:" + HttpContext.Current.Request.Url.AbsoluteUri);74 if (HttpContext.Current.Request.UrlReferrer != null)75 {76 sbBody.Append(Environment.NewLine + "访问者来源:" + "" + HttpContext.Current.Request.UrlReferrer.AbsoluteUri + "");77 }78 else79 {80 sbBody.Append(Environment.NewLine + "没有访问者来源信息");81 }82 sbBody.Append(Environment.NewLine + "访问者IP:" + Common.GetUserIP());83 sbBody.Append(Environment.NewLine + "服务器IP:" + HttpContext.Current.Request.ServerVariables["Local_addr"]);84 sbBody.Append(Environment.NewLine + "参数信息:" + param);85 sbBody.Append(Environment.NewLine + "错误信息:" + errMsg);86 sbBody.Append(Environment.NewLine + ex.StackTrace);87 mm.Body = sbBody.ToString();88 //需要设置一个邮件服务器...89 SmtpClient sendBox = new SmtpClient("mail.126.com");//你公司的邮件服务器90 sendBox.Send(mm);91 92 }93 catch (Exception exe)94 {95 string aa = exe.Message;96 }97 }

 

 

转载于:https://www.cnblogs.com/ry123/archive/2012/06/15/2550421.html

你可能感兴趣的文章
我的友情链接
查看>>
多线程之线程池任务管理通用模板
查看>>
CSS3让长单词与URL地址自动换行——word-wrap属性
查看>>
CodeForces 580B Kefa and Company
查看>>
开发规范浅谈
查看>>
Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming
查看>>
鼠标增强软件StrokeIt使用方法
查看>>
本地连接linux虚拟机的方法
查看>>
某公司面试java试题之【二】,看看吧,说不定就是你将要做的题
查看>>
BABOK - 企业分析(Enterprise Analysis)概要
查看>>
Linux 配置vnc,开启linux远程桌面
查看>>
NLog文章系列——如何优化日志性能
查看>>
Hadoop安装测试简单记录
查看>>
CentOS6.4关闭触控板
查看>>
ThreadPoolExecutor线程池运行机制分析-线程复用原理
查看>>
React Native 极光推送填坑(ios)
查看>>
Terratest:一个用于自动化基础设施测试的开源Go库
查看>>
修改Windows远程终端默认端口,让服务器更安全
查看>>
扩展器必须,SAS 2.0未必(SAS挺进中端存储系统之三)
查看>>
Eclipse遇到Initializing Java Tooling解决办法
查看>>