猿问

在 500 错误 Asp.net MVC 上发送电子邮件

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

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

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

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


ITMISS
浏览 138回答 2
2回答

阿晨1998

如果您使用的是 MVC,为什么不使用可以添加到整个应用程序的操作过滤器呢?public class CustomErrorHandler : HandleErrorAttribute{    public override void OnException(ExceptionContext filterContext)    {        try{            //Send email        }        catch{           //Swallow...        }        base.OnException(filterContext);    }}然后在你的 FilterConfig.cspublic static void RegisterGlobalFilters(GlobalFilterCollection filters){   filters.Add(new CustomErrorHandler());       }如果您吞下过滤器中的异常,则它不会冒泡并在您的应用程序中创建任何循环。此外,您可以对错误处理进行更精细的控制。

SMILET

通常使用某种库来执行日志记录:Nlog、log4net、Serilog或其他。大多数此类库都具有执行电子邮件通知的能力。您可以使用这些知识 — 在您的应用程序中执行简单且一致的日志记录,并通过为您选择的记录器进行适当配置来实现目标。这可以通过使用:Serilog 的电子邮件接收器nlog 的电子邮件目标用于 log4net 的Smtp Appender等等
随时随地看视频慕课网APP
我要回答