当SupportsPartialRendering设置为false时,ASYNC回发发生

时间:2010-09-09 21:15:40

标签: asp.net ajax asp.net-ajax

我们在ASP.NET应用程序中的两个页面上遇到了令人困惑的错误。如果用户在其上停留一段时间,这两个页面最初都有用于重新加载页面的标签,但是选择删除那些支持某些AJAX调味的页面。具体来说,我们在页面上创建了计时器控件,并将计时器的tick事件连接为更新面板的触发器,以重新加载页面的一部分。页面上还有脚本管理器,因为我们在母版页上没有脚本管理器。除了我们遇到很多这些错误外,这在很大程度上都很有效:

“页面正在执行异步回发,但ScriptManager.SupportsPartialRendering属性设置为false。”

据我了解,如果.NET框架检测到浏览器不支持部分呈现,则会将ScriptManager.SupportsPartialRendering值设置为false,并且我们不会以任何方式覆盖它。因此,如果该值为false,则不应该通过执行异步回发来执行页面,但是基于错误,回发仍然发生并且页面正在抛出异常。

奇怪的是,用户代理似乎总是GoogleBot或“Mozilla / 4.0(Windows 98; US)Opera 10.00 [en]”。

我会提供一些见解。我们已经玩弄了将SupportsPartialRendering强制为true的想法,但这并不能解释为什么如果.NET框架根据浏览器上限将其设置为false,ASYNC回发甚至会发生。

2 个答案:

答案 0 :(得分:0)

我也发现了这一点。似乎较新的浏览器也会导致此异常。到目前为止我找到的项目 - 虽然我没有解决我自己的情况 - 如下:

  1. Ensure the <xhtmlConformance mode="Legacy" /> is not set to Legacy
  2. Potentially by removing Hidden fields
  3. 您可以完全按setting ScriptManager.EnablePartialRendering to false禁用部分渲染。这将强制更新面板立即重新加载面板的全部内容。

答案 1 :(得分:0)

我发现SupportsPartialRendering因名称而混淆,因为它做了两件事。

  1. 它充当一个标志,用于确定浏览器是否支持部分页面呈现。作为一个标志,它实际上不会阻止异步回发,这就是你仍然得到错误的原因。

  2. 您可以将其用作覆盖。您可以允许异步回发,无论浏览器是什么,但您无法使用此属性阻止它。

  3. 干杯。