我的某个页面上有一个用户控件,我在此页面上出现以下错误
Object reference not set to an instance of an object.
我已经很容易地解决了这个问题但是我在这个错误的堆栈跟踪中发现了一些奇怪的东西。
当我检查堆栈跟踪时,这就像下面的
at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
它不是完整的堆栈跟踪,而是它的一部分。我想知道这个函数“System.Web.UI.Control.LoadRecursive()”的作用是什么。它被称为11次,我担心这可能会导致我的应用程序出现性能问题。我认为这个函数被调用因为我正在使用用户控件。我在我的应用程序的许多地方使用这种用户控件。
如果有人知道,请告诉我。
答案 0 :(得分:2)
LoadRecursive()
调用当前控件的OnLoad()
方法,然后递归调用其所有子控件上的LoadRecursive()
,包括嵌套在html中的控件。 / p>
因此,对于已经通过的所有父控件,您将在堆栈上调用1 LoadRecursive()
来获取自定义控件。复合控件可以有多个可以增加深度。
这不一定是性能问题。只是嵌套深度的指示。