asp.net ScriptManager EnableHistory = true InvalidOperationException

Я управляю историей браузера ajax с помощью asp.net (v. 4.0) EnableHistory="true" из ScriptManager, и до сегодняшнего дня все работало нормально. Сегодня я запускаю свой браузер с localhost и получаю это сообщение об ошибке в IE 9 (только IE)

Сообщение: Sys.InvalidOperationException: для того, чтобы функция истории работала в IE, на странице должен быть элемент iFrame с идентификатором '__historyFrame', указывающий на страницу, которая получает свой заголовок из параметра строки запроса 'title' и вызывает Sys.Application._onIFrameLoad () в родительском окне. Это можно сделать, установив для EnableHistory значение true в ScriptManager.

Я отменил все изменения, которые сделал сегодня, очистил кеш браузера + файлы cookie + историю + все и удалил «Временные файлы ASP.NET» как из папок Windows, так и из папок Temp, но эта ошибка не исчезнет. Однако удаление <meta http-equiv="X-UA-Compatible" content="IE=7" /> с моей главной страницы избавляет от ошибки, но это не вариант, поскольку многие стили идут не так. Мета была там с самого начала, и все работало, поэтому мой вопрос: почему сейчас?

Любые указатели на дальнейший сброс моей среды (например, удаление некоторых скрытых файлов) или некоторый свет в том, что может происходить, будут полезны. Спасибо.


person adentum    schedule 06.07.2011    source источник


Ответы (1)


ScriptManager выводит iframe, чтобы управление историей работало правильно в IE7. В этом случае, к сожалению, есть ошибка. Ваш браузер - IE9, поэтому он считает, что iframe вам не нужен. Но ваш метатег заставляет клиентскую сторону вести себя как IE7, поэтому ему нужен iframe. Это будет исправлено в следующей версии .NET. А пока вы сможете обойти проблему, просмотрев содержимое iframe, которое отображается при использовании режима совместимости или фактического IE7, и имитируя это на своей странице. Но вам нужно убедиться, что он не попадает на страницу дважды, когда на самом деле это IE7, поэтому выводите его только в том случае, если вы обнаружите IE> = 8. Надеюсь, имеет смысл? :)

person InfinitiesLoop    schedule 07.07.2011
comment
Имеет смысл, но почему это работало все время, а работать отказывается только сейчас? Мета-тег был всегда, и я был в IE9, когда реализовал эту функцию несколько недель назад без сучка и задоринки. - person adentum; 07.07.2011
comment
О, возможно, потому что ошибка возникает только в режиме отладки. А в режиме релиза работает? - person InfinitiesLoop; 07.07.2011
comment
Удаление debug="true" (или установка значения false) в разделе system.web / compilation файла web.config решает проблему. Спасибо за вашу помощь. - person adentum; 15.07.2011
comment
@ infinitesLoop - чтобы обойти проблему, просматривая содержимое iframe, которое отображается при использовании режима совместимости. Как я могу просмотреть содержимое iframe? что такое режим совместимости? - person Teju MB; 29.10.2012