asp.net ScriptManager 启用历史 ="true"InvalidOperationException

标签 asp.net internet-explorer asp.net-ajax scriptmanager browser-history

我使用 asp.net(v. 4.0)管理 ajax 浏览器历史记录 EnableHistory="true" ScriptManager & 直到今天一切都运行良好。 我今天从本地主机启动我的浏览器,我在 IE 9(仅 IE)中收到此错误消息

Message: Sys.InvalidOperationException: For the history feature to work in IE, the page must have an iFrame element with id '__historyFrame' pointed to a page that gets its title from the 'title' query string parameter and calls Sys.Application._onIFrameLoad() on the parent window. This can be done by setting EnableHistory to true on ScriptManager.

我已经撤消了我今天所做的所有修改,清除了我的浏览器缓存+cookies+历史+一切,并从 Windows 和 Temp 文件夹中删除了“临时 ASP.NET 文件”,但这个错误不会消失。 删除 <meta http-equiv="X-UA-Compatible" content="IE=7" />然而,从我的母版页中删除了错误,但它不是一个选项,因为很多样式都出错了。元数据从一开始就存在并且一切正常,所以我的问题是为什么是现在?

任何进一步重置我的环境(例如删除一些隐藏文件)或了解可能发生的事情的指示都会有所帮助。 谢谢。

最佳答案

ScriptManager 输出一个 iframe 使历史管理在 IE7 中正常工作。不幸的是,在这种情况下,存在一个错误。您的浏览器是 IE9,因此它认为您不需要 iframe。但是您的元标记使客户端的行为与 IE7 一样,因此它确实需要 iframe。它将在 .NET 的下一个版本中得到修复。在那之前,您应该能够通过查看在使用兼容模式或实际 IE7 时呈现的 iframe 内容并在您的页面中模仿它来解决该问题。但是当它真的是 IE7 时,你需要确保它不会在页面中出现两次,所以只有当你检测到 IE >= 8 时才输出它。我希望有道理吗? :)

关于asp.net ScriptManager 启用历史 ="true"InvalidOperationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6603904/

相关文章:

ASP.net MVC 复选框问题

c# - 仅捕获特定的 HttpException

c# - 将跨度添加到标题模板中的选项卡

javascript - 更改类名 ie8

c# - IsPostBack Condition 的作用是什么?

asp.net - 将 Enum 暴露给 WebService 的客户端 JavaScript,而不在 WebMethod 中使用它?

javascript - 无法使用 Ajax 填充 DropDownList

jquery - IE 7+ 上的 Owl Carousel Fade 过渡

javascript - Internet Explorer 中的锯齿状按钮边缘

javascript - 在 Fullcalendar.js 中显示事件时出现问题