我们在 ASP.NET 应用程序的两个页面上遇到了一个令人困惑的错误。这两个页面最初都有标签,如果用户在页面上停留一段时间,就会经常重新加载页面,但选择删除这些标签以支持一些 AJAX 调味。具体来说,我们在页面上创建了计时器控件,并将计时器的滴答事件连接为更新面板的触发器,以重新加载页面的一部分。页面上也有脚本管理器,因为母版页上没有。这在很大程度上工作得很好,除了我们遇到了很多这样的错误:
“页面正在执行异步回发,但 ScriptManager.SupportsPartialRendering 属性设置为 false。”
据我了解,如果 .NET 框架检测到浏览器不支持部分呈现,它会将 ScriptManager.SupportsPartialRendering 值设置为 false,我们不会以任何方式覆盖它。因此,如果该值为 false,页面不应执行异步回发,但基于错误,回发仍在发生并且页面抛出异常。
奇怪的是,用户代理似乎总是 GoogleBot 或“Mozilla/4.0 (Windows 98; US) Opera 10.00 [en]”。
我希望有一些见解。我们考虑过强制 SupportsPartialRendering 为 true 的想法,但这并不能解释为什么 .NET 框架根据浏览器上限将其设置为 false 时甚至会发生 ASYNC 回发。
最佳答案
我也在找这个。似乎较新的浏览器也会导致此异常。到目前为止我发现的项目——虽然我还没有解决我自己的场景——如下:
- Ensure the
<xhtmlConformance mode="Legacy" />
is not set to Legacy - Potentially by removing Hidden fields
您可以通过 setting ScriptManager.EnablePartialRendering
to false 完全禁用部分渲染.这将强制更新面板立即重新加载面板的全部内容。
关于asp.net - 当 SupportsPartialRendering 设置为 false 时发生异步回发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3680636/