如何访问 Global.ASAX 中 Application_Error 事件的对象属性?

Mat*_*att 1 c# asp.net casting

我目前正在为应用程序编写一个带有日志记录的通用错误处理程序,它应该从发送者对象中提取有用的信息。

在问我的问题之前,让我先给你一些背景知识:

我为此目的使用的Global.asax 中Application_Error处理程序定义如下:

protected void Application_Error(Object sender, EventArgs e)
Run Code Online (Sandbox Code Playgroud)

当我在这个方法中设置一个断点时,我通过本地窗口从发送者那里得到了很多有用的信息: Sender_Object_Global.asax

在 type 列中,Visual Studio 建议对象为 type ASP.global_asax,但这似乎是一种人工类型,因为当我尝试将其转换为

var senderInfo = (ASP.global_asax)sender;
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

CS0246:找不到类型或命名空间“ASP”(您是否缺少 using 指令或程序集引用?)


问题:

  1. 事件参数:有没有办法sender转换为合适的类类型,其中包含本地窗口显示的所有信息?(请注意,我不需要调试器显示的静态和非公共成员)
  2. 异常对象:同样,异常对象也可以实现吗?(您可以在excSystem.Exception 类型的屏幕截图中看到,但确切的类型是System.Web.HttpUnhandledException。这可能特别有用,exc.InnerException因为在这里我们获得了有关发生此异常的原因的真实信息。)

        var exc = Server.GetLastError();
        var innerExc = exc.InnerException;
    
    Run Code Online (Sandbox Code Playgroud)

注意我在 Stackoverflow(这里那里)中发现了一些类似的问题,但它们不是重复的,因为它们处理不同的主题。