在 ASP.NET 应用程序中捕获所有异常的最佳方法是啥?

Posted

技术标签:

【中文标题】在 ASP.NET 应用程序中捕获所有异常的最佳方法是啥?【英文标题】:What is the best method for catching all exceptions in a ASP.NET application?在 ASP.NET 应用程序中捕获所有异常的最佳方法是什么? 【发布时间】:2021-08-07 01:48:11 【问题描述】:

在旧的 .NET 4.8 Web 窗体应用程序中捕获尚未手动捕获和处理的异常的最佳位置在哪里?

我目前正在使用Airbrake,他们提供了一个 ASP.NET 模块来执行此操作,但是它依赖于 web.config 中存在的凭据,这是我无法使用的。

看看 elmah 等其他工具,它们的 module 钩子似乎会自动捕获到 HttpModuleBaseIExceptionFiltering 异常,如何手动执行此操作?

我猜测 Global.asax 的其中一个事件,但不太确定从哪里开始。

(目前无法更新 4.8 以上/非 Web Forms

【问题讨论】:

您在 global.asax 中看到了 Application_Error 事件?这将是一个很好的起点。 【参考方案1】:

我同意梅森的观点:

public class Global : System.Web.HttpApplication

    protected void Application_Error(object sender, EventArgs e)
    
        // Insert error handling code here
    

这是在 global.asax 文件中创建的 Global 类的一部分。

【讨论】:

以上是关于在 ASP.NET 应用程序中捕获所有异常的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

我如何在 asp.net 核心中捕获或抛出异常?

ASP.NET:在 global.asax 中未捕获安全异常

ASP.NET MVC 控制器不会从 LINQ lambda 捕获异常

ASP.NET MVC中注册Global.asax的Application_Error事件处理全局异常

在 ASP.NET 中实现 404 的最佳方法

ASP.Net 异常显示文件路径