Asp.net PreRenderComplete需要很长时间才能完成

时间:2013-02-26 16:48:03

标签: asp.net webforms

我在某个特定页面上的按钮点击事件上遇到问题。有时它在正常参数范围内表现良好,但似乎每当服务器处于适度负载(意味着我可以在我们的生产环境中产生此问题而不是在我们的开发或测试环境中)时,它似乎只是挂起。启用跟踪后,我发现它似乎只是在Begin PreRenderComplete和End PreRenderComplete之间挂起。它只是在那里坐了将近30秒。我没有在该事件空间中执行的任何特定代码。我的理解是,这个事件应该是生命周期中的非事件,因为它只是为了确保PreRender阶段结束。这个页面有很多控件,因此有一个相当大的视图状态,但我的理解是视图状态是在LoadState和SaveState事件中处理的,这些事件似乎不是我所有时间都在吃的阶段。 / p>

我已经对服务器运行了perfmon,有时当我能够产生这种行为时,系统资源是正常的,没有请求排队。我试图了解可能在幕后发生的行为导致这种缓慢。

2 个答案:

答案 0 :(得分:0)

页面上是否有任何异步操作?我认为异步调用将在该事件之前完成,因此如果其中一些需要一段时间,例如数据库速度慢或网络调用速度慢,那么可能会导致您看到延迟。

答案 1 :(得分:0)

我想我发现了问题。通过更深入的分析,似乎我的ScriptManager控件导致尝试组合脚本的延迟。显然,这仅在负载下出现问题,并且大多数发生在prerendercomplete事件中。通过设置CombineScripts =“false”属性,它似乎已清除此问题。