发生了类型为“System.StackOverflowException”的未处理异常,位于未知模块中。

3

我经常遇到类型为"未处理的System.StackOverflowException类型异常在未知模块中发生"的错误。这种情况发生在代码库非常大的网站上,但错误只会在网站运行几分钟后才出现。

以下是错误指向的位置:

public partial class HealthInsurance : System.Web.UI.MasterPage
{
        protected void Page_Load(object sender, EventArgs e)
        {
            base.OnLoad(e);
            Page.Header.DataBind();
        }
}
2个回答

4

在自动装配的 Page_Load() 处理程序中,您不应调用基类实现的 OnLoad() 方法。

在底层,OnLoad() 负责调用 Page_Load(),因此您的代码最终会陷入无限递归循环。

您只需要编写:

protected void Page_Load(object sender, EventArgs e)
{
    Page.Header.DataBind();
}

如果你选择重写 OnLoad() 而不是依赖于 Page_Load(),那么情况会有所不同。在这种情况下,你确实需要调用基类的方法:
protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);
    Page.Header.DataBind();
}

1
如果您订阅了“Load”事件,请勿调用基本的“OnLoad”,因为基本的“OnLoad”负责触发“Load”事件,这将导致无限循环。
但是,如果您正在重写“OnLoad”方法,则适当调用基本的“OnLoad”方法,例如:
protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);
    Page.Header.DataBind();
}

在上述情况中,请注意override关键字。

非常感谢大家的评论,我真的很感激。我尝试了你们所有人提到的方法,但仍然遇到了这个错误:对象引用未设置为对象的实例。 - Umar Bachena
我尝试像这样更改代码 protected override void OnLoad(EventArgs e) { base.OnLoad(e); //Page.Header.DataBind();},它可以工作但是侧边栏没有显示。有什么帮助吗!!!! - Umar Bachena

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接