C# 类型为';的未处理异常;System.StackOverflowException';发生在未知模块中
我经常遇到类型为“未知模块中发生'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) {
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
事件,请不要调用baseOnLoad
,因为baseOnLoad
是触发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();}
它可以工作,但不会显示侧边栏。任何帮助!!!!!!