PreRender阶段很慢

时间:2012-09-07 10:57:26

标签: asp.net viewstate

我刚刚在其中一个网页上遇到了性能问题。 base.PreRender 需要超过12秒:

aspx.page   Begin PreRender 0.00577958119283298 0.000009
aspx.page   End PreRender   12.3006780015036    12.294898

如何在PreRender阶段诊断出这种情况?起初我认为这是数据库提取的一个问题,但据我所知,当PreRender出现时,所有数据绑定都已完成。

可能是ViewState是问题吗?

编辑: 我已将此诊断代码添加到我的页面中:

    protected override void OnPreRender(EventArgs e)
    {
        Trace.Write("OnPreRender", "Start");
        base.OnPreRender(e);
        Trace.Write("OnPreRender", "End");
    }

实际上Trace.Write("End");行会立即执行。这是跟踪输出

aspx.page   Begin PreRender 0.233399419245709   0.000010
OnPreRender Start   0.233407218080441   0.000008
OnPreRender End 0.233415320448565   0.000008
aspx.page   End PreRender   1.45992676325022    1.226511

1 个答案:

答案 0 :(得分:3)

页面上带有runat="server"标记的每个网页控件也会有一个OnPreRender()方法,该方法可以独立于page.aspx OnPreRender()进行调用。如果页面上有任何自定义控件,则可能需要在OnPreRender()方法中使用相同的诊断代码进行故障查找。

(很抱歉写这个作为答案 - 还没有足够的代表发表评论!)