在 500 错误 Asp.net MVC 上发送电子邮件
Send email on 500 Error Asp.net MVC
如果我的 MVC 应用程序出现 500 异常错误,我想发送一封电子邮件提醒网站所有者。
我在 global.asax.cs 文件中发现了 Application_Application_Error 方法,它会在应用程序出现错误时触发。
我想知道的是,用这种方法发送邮件安全吗,如果出现意外错误怎么办?应用程序会以无限循环结束吗?杀死我的网络服务器?
有没有人做过这样的事情,有没有更好的方法?
如果您使用的是 MVC,为什么不使用可以添加到整个应用程序的操作过滤器?
public class CustomErrorHandler : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
try{
//Send email
}
catch{
//Swallow...
}
base.OnException(filterContext);
}
}
然后在你的FilterConfig.cs
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new CustomErrorHandler());
}
如果您在过滤器中吞下异常,那么它不会冒泡并在您的应用程序中创建任何循环。另外,您可以对错误处理进行更精细的控制。
通常使用某种库来执行日志记录:Nlog, log4net, Serilog 或其他。
而且大多数此类库都具有执行电子邮件通知的能力。您可以利用这些知识——在您的应用程序中执行简单且一致的日志记录,并通过为您选择的记录器进行适当配置来实现目标。
这可以通过使用来完成:
- Email sink 对于 serilog
- Email target 对于 nlog
- Smtp Appender 用于 log4net
- 等等
如果我的 MVC 应用程序出现 500 异常错误,我想发送一封电子邮件提醒网站所有者。
我在 global.asax.cs 文件中发现了 Application_Application_Error 方法,它会在应用程序出现错误时触发。
我想知道的是,用这种方法发送邮件安全吗,如果出现意外错误怎么办?应用程序会以无限循环结束吗?杀死我的网络服务器?
有没有人做过这样的事情,有没有更好的方法?
如果您使用的是 MVC,为什么不使用可以添加到整个应用程序的操作过滤器?
public class CustomErrorHandler : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
try{
//Send email
}
catch{
//Swallow...
}
base.OnException(filterContext);
}
}
然后在你的FilterConfig.cs
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new CustomErrorHandler());
}
如果您在过滤器中吞下异常,那么它不会冒泡并在您的应用程序中创建任何循环。另外,您可以对错误处理进行更精细的控制。
通常使用某种库来执行日志记录:Nlog, log4net, Serilog 或其他。 而且大多数此类库都具有执行电子邮件通知的能力。您可以利用这些知识——在您的应用程序中执行简单且一致的日志记录,并通过为您选择的记录器进行适当配置来实现目标。
这可以通过使用来完成:
- Email sink 对于 serilog
- Email target 对于 nlog
- Smtp Appender 用于 log4net
- 等等