前言:异常的处理在项目开发中是很有必要的,异常的处理不仅仅只是try..catch..finally就完事了的。异常处理绝对可以称开发中的重要组成部分。必须正确的面对异常,因为即使是最能干的开发人员,也要面对这个问题 ....
我们不知道客户是怎么样使用我们开发的软件的,所以我们必须处理这样的情况:如果系统不按照我们的设计时所想的运行,我们改怎么办?
下面我们就来具体的介绍在ASP.NET项目开发中的异常的处理方式,希望看完后,大家可以回答上面的问题。
本篇的话题如下:
应用程序级别异常处理的错误处理
页面级别异常处理
方法级别异常处理
web.config文件异常处理配置
健康监视(Health Monitoring)
Enterprise Application Blocks异常处理模块
一.在应用程序级别的异常处理:
相信大家对Application对象不陌生,而且在项目中添加过Global.asax文件。确实,ASP.NET在应用程序级别处理异常的代码都是放在Global.asax的Application_Error事件处理下的:
void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
}
我们可以在上面的事件处理的方法中捕获所有的异常,而且还可以把异常记录到日志文件,并且同时发送Email告诉开发人员出现了什么问题,如下
Exception error = Server.GetLastError().GetBaseException();
//在事件日志中记录异常
if (!EventLog.SourceExists("ApplicationException"))
{
EventLog.CreateEventSource("ApplicationException", "Application");
}
EventLog eventLog = new EventLog();
eventLog.Log = "Application";
eventLog.Source = "ApplicationException";
eventLog.WriteEntry(error.ToString(), EventLogEntryType.Error);
//发送Email给开发人员
MailMessage email = new MailMessage("administrator@xiaoyang.com",
"vince.varallo@PoweredByV2.com");
email.Body = error.ToString();
email.Subject = "An error occurred in the Application";
SmtpClient smtpClient = new SmtpClient("127.0.0.1", 25);
smtpClient.Send(email);
Response.Redirect("ErrorPage.aspx");
当然,上面的代码要正确的运行,我们海必须在Global.asax中加入相应的命名空间,而且在发送邮件的时候,上面的"127.0.0.1"要换为我们自己的邮件服务器的地址:
<%@ Import Namespace="System.Diagnostics" %>
<%@ Import Namespace="System.Net.Mail" %>
还有一点要注意的就是,ASP.NET运行时是以ASPNET账户运行的,这个账户的权限是有限的,如果我们想要使得上面的代码可以运行,那么就必须要给ASPNET账户访问注册表的权限。如果你不给权限,那么上面的代码就报错。
我们赋予ASPNET账户访问在"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog"节点以及字节点的权限。