.net捕获全局异常并且记录日志、多线程方式发送邮件提醒_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > .net捕获全局异常并且记录日志、多线程方式发送邮件提醒

.net捕获全局异常并且记录日志、多线程方式发送邮件提醒

 2016/5/21 5:33:35  jerrylsxu  程序员俱乐部  我要评论(0)
  • 摘要:在软件、网站中难免会出现种种异常,如果你的项目中有未处理的异常并且不想一处处的加异常那么可以借鉴下一下这个方案1.新建一个全局应用文件Global.asax此文件在统计在线人数的时候应用较多2.此文件中有个Application_Error方法此方案就是用的这个方法,加入以下捕获异常的代码1//在出现未处理的错误时运行的代码2Exceptionex=Server.GetLastError();3StringBuildersb=newStringBuilder()
  • 标签:.net 多线程 net 邮件 方式 发送邮件 全局 线程 异常

在软件、网站中难免会出现种种异常,如果你的项目中有未处理的异常并且不想一处处的加异常那么可以借鉴下一下这个方案

1.新建一个全局应用文件Global.asax此文件在统计在线人数的时候应用较多

2.此文件中有个Application_Error方法此方案就是用的这个方法,加入以下捕获异常的代码

class="cnblogs_code_copy">复制代码
 1 //在出现未处理的错误时运行的代码
2 Exception ex = Server.GetLastError();
3 StringBuilder sb = new StringBuilder();
4 string dt = DateTime.Now.ToString();
5 sb.Append("------\r\n").Append(dt).Append("\r\n内部错误:").Append(ex.InnerException.ToString())
6 .Append("\r\n堆栈:").Append(ex.StackTrace).Append("\r\n内容:").Append(ex.Message)
7 .Append("\r\n来源:").Append(ex.Source).Append("\r\n");
8 Log.SetLog(sb.ToString());
9 Server.ClearError();
10 Server.Transfer("error.aspx", false);
复制代码

3.新建个记录日志并且自动发送邮件提醒的类

复制代码
 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Web;
5 using System.IO;
6 using System.Threading;
7 /// <summary>
8 ///Log 的摘要说明
9 /// </summary>
10 public class Log
11 {
12 public Log()
13 {
14 //
15 //TODO: 在此处添加构造函数逻辑
16 //
17 }
18 private string logBody;
19 public string LogBody
20 {
21 get { return logBody; }
22 set { logBody = value; }
23 }
24 public static void SetLog(string str)
25 {
26 string path = HttpContext.Current.Server.MapPath("log.log");
27 File.AppendAllText(path, str);
28 //Thread.Sleep(1000);
29 Log log1 = new Log();
30 log1.LogBody = str;
31 Thread t = new Thread(new ThreadStart(log1.SendEmail));
32 t.IsBackground = true;
33 t.Start();
34 }
35
36 private void SendEmail()
37 {
38 System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();
39 client.Host = "---";
40 client.UseDefaultCredentials = false;
41 client.Credentials = new System.Net.NetworkCredential("---", "---");
42 client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
43 client.Timeout = 9000;
44 System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage("---", "---");
45 message.Subject = "---";
46 message.Body = logBody;
47 message.BodyEncoding = System.Text.Encoding.UTF8;
48 message.IsBodyHtml = true;
49
50 try
51 {
52 client.Send(message);
53
54 }
55 catch(Exception ex)
56 {
57 }
58 }
59 }
复制代码

其中---按需求自行填写

4.新建个error.aspx文件用于捕获异常后转向的提示页面

发表评论
用户名: 匿名