6

我的一个页面上有一个用户控件,我在这个页面上遇到错误

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 次,我担心这可能会导致我的应用程序出现性能问题。我认为调用此函数是因为我正在使用用户控件。我在我的应用程序的许多地方都使用这种用户控件。

请告诉我是否有人知道这件事。

4

1 回答 1

3

LoadRecursive()调用当前控件的OnLoad()方法,然后递归调用LoadRecursive()其所有子控件,包括嵌套在 html 中的子控件。

因此,对于已通过的每个父控件,您将LoadRecursive()在堆栈上调用 1 次以访问您的自定义控件。复合控件可以多合一,这将增加深度。

这不一定是性能问题。只是嵌套深度的指示。

于 2015-02-22T09:17:19.900 回答