4

我们正在跟踪我们的 ASP.NET 应用程序,发现对于我们的一个页面,我们看到从 PreRenderComplete Ends 到 SaveState Begins 有大约 2.5 秒的时间延迟。以下是部分日志

aspx.page End PreRender 9.123185387 0.184541

aspx.page 开始 PreRenderComplete 9.123277718 0.000092

aspx.page End PreRenderComplete 9.123666575 0.000389

aspx.page 开始 SaveState 11.77441916 2.650753

aspx.page 结束 SaveState 11.77457158 0.000152

aspx.page 开始 SaveStateComplete 11.77459695 0.000025

aspx.page 结束 SaveStateComplete 11.77461284 0.000016

aspx.page 开始渲染 11.77462541 0.000013

aspx.page 结束渲染 15.10157813 3.326953

我们正试图了解这背后是否有任何理由。请帮助我理解这一点。

提前致谢

4

1 回答 1

4

根据 Reflector 的说法,这两个事件之间唯一发生的事情是一些代码构建了用于跟踪输出的控制树 (BuildPageProfileTree)。此代码仅在启用跟踪时运行。以下是页面 ProcessRequestMain 例程中的相关部分:

if (context.TraceIsEnabled)
{
    this.Trace.Write("aspx.page", "End PreRenderComplete");
}
if (context.TraceIsEnabled)
{
    this.BuildPageProfileTree(this.EnableViewState);
    this.Trace.Write("aspx.page", "Begin SaveState");
}

因此,具有讽刺意味的是,您在上面看到的减速是由于您正在跟踪您的页面这一事实造成的,如果跟踪被禁用,则不会出现。

于 2011-02-15T07:23:31.687 回答