3

「タイプ 'System.StackOverflowException' の未処理の例外が不明なモジュールで発生しました。」というタイプのエラーが定期的に発生しています。これは、コード ベースが非常に大きい Web サイトで発生します。しかし、エラーはウェブサイトの数分後にのみ発生します.

これは、エラーが私に指摘した場所です:

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

2 に答える 2

4

自動配線されたハンドラーからOnLoad()の基本クラスの実装を呼び出さないでくださいPage_Load()

内部で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();
}
于 2013-03-17T12:11:52.017 に答える
1

イベントをサブスクライブしている場合はLoad、ベースを呼び出さないでください。イベントを発生OnLoadさせるのはベースOnLoadであるLoadため、エンドレス サイクルになります。

ただし、メソッドをオーバーライドする場合は、基本メソッドOnLoadを呼び出すことが適切です。OnLoad

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

上記の場合、overrideキーワードに注意してください。

于 2013-03-17T12:16:43.123 に答える