据我了解asp.net异常。如果我有一个页面调用一些代码,而这些代码又会调用另一段代码。如果代码的最后一位(比如它在不同的dll中)抛出一个异常,并且它无处处理,那么我应该让页面在具有堆栈跟踪的YSOD上抛出错误,该堆栈跟踪以反向的时间顺序显示发生了什么。所以我将在堆栈底部跟踪执行的第一部分代码然后在其上方,下一条流程一直到顶部,其中发生了实际错误。
考虑到这一点,我有一个没有在堆栈跟踪中显示aspx页面的应用程序。它也没有显示对asp.net堆栈的通常初始调用,如:
在System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o,Object t,EventArgs e)at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)在System.Web.UI.Control.OnLoad(EventArgs e)at Community.Support.BasePage.OnLoad(EventArgs e)in C:\ Projects \ Unilever \ BinaryFiles \ Support \ BasePage.cs:第389行 System.Web.UI.Control.LoadRecursive()at System.Web.UI.Page.ProcessRequestMain(布尔 includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)
我真的不明白为什么。我得到的唯一提示是正在使用反射,我想知道这是为什么?
答案 0 :(得分:0)
由于您使用的是BasePage类,获取详细信息的一种好方法是覆盖OnError方法;此方法将触发页面中所有未处理的错误。然后,收集有关页面的信息并将其添加到错误中,或将其添加到记录的语句中。
HTH。