我刚刚在其中一个网页上遇到了性能问题。 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
答案 0 :(得分:3)
页面上带有runat="server"
标记的每个网页控件也会有一个OnPreRender()
方法,该方法可以独立于page.aspx OnPreRender()
进行调用。如果页面上有任何自定义控件,则可能需要在OnPreRender()
方法中使用相同的诊断代码进行故障查找。
(很抱歉写这个作为答案 - 还没有足够的代表发表评论!)