2009-01-12 38 views
25

我希望在应用程序崩溃时将邮件发送给管理员。 所以我简单地做这global.asax在ASP.NET应用程序的global.asax中处理Application_Error

void Application_error(object sender, EventArgs e) 
{ 
    SendMessageToAdministarator(Server.GetLastError().ToString()); 
} 

但实际上,很多时候Application_Error被称为即使应用程序不会崩溃。

我希望只在应用程序崩溃时才发送邮件给管理员。

另外,我有一个简单的方法来解除应用程序吗?

我正在寻找最简单的解决方案。

回答

52

当应用程序没有崩溃时发送什么样的错误?您可以检查异常的类型和不发送的电子邮件例外不崩溃的应用程序(例如重定向可以丢,我手动代码过滤ThreadAbortException):

protected void Application_Error(Object sender, EventArgs e) 
{ 
    Exception ex = Server.GetLastError(); 
    if (ex is ThreadAbortException) 
     return; 
    Logger.Error(LoggerType.Global, ex, "Exception"); 
    Response.Redirect("unexpectederror.htm"); 
} 

你可以添加重定向到错误页面,其中包含发生错误的用户的消息以及指向站点中相关页面的一些链接。这是为了'解除应用程序' - 我希望这是你想要的。

另外,您也可以查看log4net的日志记录,该日志也可以记录服务器上的错误发送错误邮件。

+0

非常感谢。 “手动过滤代码”是什么意思?同时,一个错误,我constanly得到的是一些 System.Web.HttpException:文件不存在。 在System.Web.StaticFileHandler.ProcessRequestInternal(HttpContext的背景下)......但是,这并不做任何明显的伤害 – Hanan 2009-01-12 09:33:03

相关问题