我经常遇到类型的错误。未知模块中出现未处理的类型'System.StackOverflowException'异常。“。这种情况发生在具有相当大代码库的网站中。但该错误仅在网站发布几分钟后才会发生。
这是错误指向我的地方:
public partial class HealthInsurance : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
base.OnLoad(e);
Page.Header.DataBind();
}
}
答案 0 :(得分: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 :(得分:1)
如果您订阅了Load
活动,请不要拨打基座OnLoad
,因为基座OnLoad
负责解除Load
事件,所以它会是一个无尽的循环。
但是,如果您覆盖 OnLoad
方法,那么调用基本OnLoad
方法是合适的,例如
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
Page.Header.DataBind();
}
在上述情况下,请注意override
关键字。