在 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 或其他。 而且大多数此类库都具有执行电子邮件通知的能力。您可以利用这些知识——在您的应用程序中执行简单且一致的日志记录,并通过为您选择的记录器进行适当配置来实现目标。

这可以通过使用来完成: