WebResource.axd在Internet Explorer 11中无法工作。

4
我们正在测试我们的网站以适配新的Windows 8.1 IE 11浏览器(传统和Metro)。
WebResource.axd中嵌入了一个Javascript文件。
使用Firefox、Google Chrome和IE 11添加了兼容性视图后,WebResource可以被成功生成和加载。
唯一的问题是在IE 11(传统和Metro)中无法加载WebResource
我并不是寻求精确的答案,但让我困惑的是:
我看不到在生成的HTML中有WebResource<script>标签。也没有任何请求被发出,这有点隐晦。
现在我的问题是,问题可能出在哪里?我调试了我的代码,但在任何自定义处理程序或模块中都找不到失败的原因。
它是否在IIS处理程序(AssemblyResourceLoader-Integrated)中失败,还是在注册WebResource的生成逻辑中失败?

1
可能与IE10的问题有关。尝试在Page_Init事件中设置Page.ClientTarget =“uplevel” - Richard Deeming
好的,我会尝试并让您知道。现在我无法访问远程机器。 - Rameez Ahmed Sayad
哦,好的。谢谢……我不明白微软如何将一个新的操作系统移植过来,却没有将这个修复程序包含进去…… - Rameez Ahmed Sayad
2个回答

3

以下为 Richard 的解决方法:

Page_Init 事件中设置 Page.ClientTarget = "uplevel"

这是正确的方法;你需要禁用 User-Agent 嗅探,使 ASPNET 向 IE11 发送正确的脚本块。更多信息请参阅http://msdn.microsoft.com/en-us/library/system.web.ui.page.clienttarget.aspx

不幸的是,他们修复 IE10 的补丁在 IE11 上并没有正常工作(因为 IE 团队显著地更改了 IE 用户代理字符串,默认情况下删除了 MSIE 标记)。因此,在 2013 年 6 月发布了另一个 ASP.NET 补丁。请参阅https://stackoverflow.com/a/18651133/126229


谢谢Richard...我还要尝试一下...我肯定会向你确认结果的...而且我认为你关于用户代理字符串是正确的。我发现某些CSS工作需要重新完成,如渐变等。 - Rameez Ahmed Sayad
@所有人,我下载了Win 7的IE 11并将其指向我机器上的代码,这意味着我的机器成为了客户端和服务器,并且一切都正常工作。 FYI,我没有明确安装任何热修复程序或更改PageLevel中的任何内容。 实际上,由于我有VS 2012,我无法安装热修复程序。 我假设IE 11对Win 7有所作为。但如果我将服务器指向原始QA机器,则问题仍然存在。 因此,热修复程序可能随着.NET 4.5或我安装的更新之一而来。 - Rameez Ahmed Sayad
当您访问Intranet/本地机器上的页面时,默认情况下该页面会在IE的“兼容性视图”模式下加载,该模式使用IE7用户代理字符串(从而避免了ASP.NET问题)。您可以通过按F12并查看“浏览器模式”指示器来查看此内容。 - EricLaw
IE 11开发者工具没有移植浏览器指示器模式。我将尝试指向其他使用Win 8.1的客户端,将我的机器作为服务器。 - Rameez Ahmed Sayad
我使用了另一个客户端并将服务器指向我的机器,一切仍然正常工作。问题仍然存在,即它是如何在我的机器上工作的,.NET 4.5是否与此有关或其他已安装的更新。 - Rameez Ahmed Sayad
.NET 4.5解决了这个问题。作为解决方法,可以采用上述解决方案,但需要更改客户端。请查看https://dev59.com/oHXYa4cB1Zd3GeqP3jRW。 - Rameez Ahmed Sayad

1
我们最终通过安装Richard提到的热修复http://support.microsoft.com/kb/2600088(32位或64位),并运行aspnet_regbrowsers -i来解决了问题。
感谢所有提供解决方案的人。虽然不想把答案归功于自己,但也许有些人在评论中找不到这个方法。

这不是答案。答案是.NET 4.5解决了这个问题。作为一种解决方法,以上是解决方案。请查看https://dev59.com/oHXYa4cB1Zd3GeqP3jRW。 - Rameez Ahmed Sayad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接