类型为'System.StackOverflowException'发生在未知模块
本文关键字:未知 模块 System 类型 StackOverflowException | 更新日期: 2023-09-27 18:04:13
我经常遇到类型为"类型为'System的未处理异常"的错误。StackOverflowException' occurred in Unknown Module."。这种情况发生在代码基数相当大的网站上。但该错误仅在网站启动几分钟后出现。
这是错误指向的地方:
public partial class HealthInsurance : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
base.OnLoad(e);
Page.Header.DataBind();
}
}
你不应该从autowired的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();
}
如果订阅Load
事件,不要调用基本的OnLoad
,因为基本的OnLoad
负责触发Load
事件,所以这将是一个无休止的循环。
OnLoad
方法,那么调用基本OnLoad
方法是合适的,例如
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
Page.Header.DataBind();
}
在上面的例子中,请注意override
关键字。