0

如果在我的 MVC 应用程序中发生 500 异常错误,我想发送一封电子邮件以提醒网站所有者。

我在 global.asax.cs 文件中发现了 Application_Application_Error 方法,该方法在应用程序出现错误时触发。

我想知道的是,用这种方法发送邮件是否安全,如果发生意外错误会怎样?应用程序最终会陷入无限循环吗?杀死我的网络服务器?

以前有没有人做过类似的事情,有没有更好的方法?

4

2 回答 2

4

如果您使用 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());       
}

如果您在过滤器中吞下异常,则它不会冒泡并在您的应用程序中创建任何循环。另外,您可以对错误处理进行更精细的控制。

于 2018-05-10T12:10:13.783 回答
0

通常使用某种库来执行日志记录:Nloglog4netSerilog或其他。大多数此类库都具有执行电子邮件通知的能力。您可以使用这些知识——在您的应用程序中执行简单且一致的日志记录,并通过为您选择的记录器进行适当配置来实现目标。

这可以通过使用来完成:

于 2018-05-10T15:21:19.213 回答