C# 类型为';的未处理异常;System.StackOverflowException';发生在未知模块中

C# 类型为';的未处理异常;System.StackOverflowException';发生在未知模块中,c#,C#,我经常遇到类型为“未知模块中发生'System.StackOverflowException'类型的未处理异常”的错误。这发生在代码库相当大的网站上。但是这个错误只有在浏览网站几分钟后才会发生 这就是错误指向我的地方: public partial class HealthInsurance : System.Web.UI.MasterPage { protected void Page_Load(object sender, EventArgs e) {

我经常遇到类型为“未知模块中发生'System.StackOverflowException'类型的未处理异常”的错误。这发生在代码库相当大的网站上。但是这个错误只有在浏览网站几分钟后才会发生

这就是错误指向我的地方:

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

您不应该从自动连接的
Page\u Load()
处理程序调用基类的实现

在引擎盖下,
OnLoad()
负责调用
Page\u Load()
,因此您的代码最终进入无限递归循环

你只需要写:

protected void Page_Load(object sender, EventArgs e)
{
    Page.Header.DataBind();
}
如果您选择覆盖
OnLoad()
,而不是依赖
Page\u Load()
,情况会有所不同。在这种情况下,您确实需要调用基类的方法:

protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);
    Page.Header.DataBind();
}

如果订阅
Load
事件,请不要调用base
OnLoad
,因为base
OnLoad
是触发
Load
事件的原因,因此这将是一个无休止的循环

但是,如果您要重写
OnLoad
方法,则可以调用基本
OnLoad
方法,例如

protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);
    Page.Header.DataBind();
}

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

谢谢大家的评论,我真的很感激。我尝试了你们所说的方法,但仍然有这样的错误:
对象引用未设置为对象的实例。
我尝试像这样更改代码
protected override void OnLoad(EventArgs e){base.OnLoad(e);//Page.Header.DataBind();}
它可以工作,但不会显示侧边栏。任何帮助!!!!!!