我目前正在编写一个通用错误处理程序,其中包含应用程序的日志记录,应该从发送方对象中提取有用的信息。
在我提出问题之前,请先给我一些背景知识:
我在此目的中使用的 Global.asax 中的 Application_Error 处理程序定义如下:
protected void Application_Error(Object sender, EventArgs e)
当我在此方法中设置断点时,我通过本地窗口获取发件人的许多有用信息:
在类型列中,Visual Studio建议对象的类型为ASP.global_asax
,但这似乎是一种人工类型,因为当我尝试将其转换为
var senderInfo = (ASP.global_asax)sender;
我收到以下错误:
CS0246:类型或命名空间' ASP'找不到(你错过了使用指令或汇编引用吗?)
sender
投射到合适的类类型中,其中包含Locals窗口显示的所有信息? (注意我不需要调试器显示的静态和非公共成员) 异常对象:同样,这也可以为异常对象实现吗? (您可以在屏幕截图中看到exc
的类型为System.Exception,但确切的类型为System.Web.HttpUnhandledException
。这对exc.InnerException
特别有用,因为我们在这里获取有关发生此异常的原因的真实信息。)
var exc = Server.GetLastError();
var innerExc = exc.InnerException;
N.B。我在Stackoverflow(here和there)中发现了一些类似的问题,但它们并不重复,因为它们处理不同的主题。