未知模块中发生未处理的“System.StackOverflowException”类型异常

时间:2013-03-17 11:58:45

标签: c#

我经常遇到类型的错误。未知模块中出现未处理的类型'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 个答案:

答案 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关键字。