2010-09-09 3 views
3

Мы получаем путаную ошибку на двух наших страницах в нашем приложении ASP.NET. Обе страницы оригинала имели теги, чтобы перезагружать страницу так часто, если пользователь некоторое время сидел на ней, но решил удалить их в пользу некоторых ароматизаторов AJAX. В частности, мы создали элементы управления таймерами на странице и подключили событие галочки таймера в качестве триггера для панели обновления, чтобы перезагрузить часть страницы. На страницах (-ах) также есть диспетчеры сценариев, поскольку у нас их нет на главной странице. Это в значительной степени отлично работает, за исключением того, что мы получаем много таких ошибок:Возвраты ASYNC, когда SupportsPartialRendering установлено на false

«Страница выполняет асинхронную обратную передачу, но свойство ScriptManager.SupportsPartialRendering имеет значение false».

Полагаю, что если платформа .NET обнаруживает, что браузер не поддерживает частичный рендеринг, он установит значение ScriptManager.SupportsPartialRendering в значение false, и мы НЕ будем его переопределять каким-либо образом. Таким образом, страницы не должны выполняться при выполнении async-обратных передач, если это значение является ложным, но на основе ошибки обратные вызовы все еще происходят, а страница выбрасывает исключение.

Любопытно, что пользовательским агентом всегда является GoogleBot или «Mozilla/4.0 (Windows 98; US) Opera 10.00 [en]».

Я мог бы рассказать о некоторых прозрениях. Мы играли с идеей принуждения SupportsPartialRendering к true, но это не объясняет, почему обратные вызовы ASYNC происходят даже в случае, если инфраструктура .NET устанавливает это значение false на основе шапок браузера.

+0

Прошли ли вы с этим в конце? –

ответ

0

Я нахожу это тоже. Похоже, что новые исключения также вызывают это исключение. Элементы, которые я нашел до сих пор - хотя я не решен свой собственный сценарий - таковы:

  1. Ensure the <xhtmlConformance mode="Legacy" /> is not set to Legacy
  2. Potentially by removing Hidden fields

Вы можете отключить частичный рендеринг полностью setting ScriptManager.EnablePartialRendering to false. Это заставит панель обновления перезагрузить все содержимое панели сразу.

0

Я нахожу SupportsPartialRendering путают также из-за имени и потому что он делает две вещи.

  1. Он выступает в качестве флага, чтобы определить, поддерживает ли браузер частичное отображение страниц. Как флаг, он фактически не предотвратит асинхронные обратные вызовы, поэтому вы все равно получите ошибку.

  2. Вы можете использовать его как переопределение. Вы можете разрешить асинхронные обратные вызовы независимо от того, что такое браузер, но вы не можете предотвратить его с помощью этого свойства.

Cheers.

Смежные вопросы