asp.net - CrossPostback、AJAX 控件和 ASP.NET 生成的回发适用于 .NET 4.5,而不适用于 IE 11 中的 .NET 4.0

标签 asp.net .net asp.net-ajax internet-explorer-11

我之前已经发布并回答了这个问题。 WebResource.axd not working with Internet Explorer 11但我认为修补程序已经解决了这个问题(CrossPostback、AJAX 控件和 ASP.NET 生成的回发不起作用),但是在 QA 中安装后,它不起作用,我们意识到是 .NET 4.5 使事情正常工作。我正在比较 .NET 4 和 .NET 4.5 之间的 .NET 框架文件夹。我需要问的是 .NET 4.5 中什么可以真正解决 IE 11 问题。 IE 11 的主要变化是用户代理字符串。 .NET 4.5 中的哪些特定修复可以解决 ASP.NET 4.0 和 IE 11 之间的差异。手动合并差异可能不会真正有帮助,因为将来如果在 .NET 4.0 中安装了安全/修补程序,这些文件可能会被覆盖.
另一个注意事项,问题在于 Windows 7、8、8.1 中的 IE 11
任何帮助或建议。
更新 :我们尝试仅将 .NET 4.5 的浏览器定义注册到 .NET 4.0 中,但问题仍然存在,因此除了定义之外,还有一些库可以使 IE 11 正常工作。

最佳答案

我们有一个类似的问题,即 DropDownList 的自动回发在较新版本的 IE 中停止工作。我们首先在 IE10 中注意到它,并将其跟踪到许多人都知道的浏览器定义错误,详细信息 here ,等等。

对于这个特定的应用程序,以及它的不同环境运行/运行的一组机器,升级到 4.5 不是一个近期的选择。更重要的是,当我们尝试安装它时,上面帖子中详述的机器范围的修复出错了。然而,站点范围的修复确实起到了作用。

一两周后,有人碰巧用 IE11 预览版访问了该网站,问题又出现了。我们进行了更多研究,发现站点范围修复中的浏览器定义“IE10Plus”(实际上确实修复了 IE10 问题)不适用于 IE11。为了识别 IE10,添加了一个主要版本的正则表达式匹配 - "\d{2,}"- 它匹配两位数字(而不是沿着“^9$”行的先前匹配 - 完全匹配“9”)和IE10 现在可以工作了。问题是 IE10Plus 定义(以及它之前的每个 IE 定义)最终源自“IE”定义,并且该定义还要求 UA 字符串中包含“MSIE”(除其他外),并且从 IE11 开始,“MSIE"不再是 UA 字符串的一部分。

“IE10Plus”应该真正被称为“IE10”。

鉴于我们无法在近期升级到 4.5,我们不得不寻找其他解决方案。我们找到的一个是创建我们自己的 IE11 浏览器定义。除了我们在 IE10 中看到的功能之外,我们无法定义任何功能,但这非常接近,至少它可以识别浏览器(并且不会像正在发生的那样降低功能)。

人们会告诉你不要这样做,但对于某些人(比如我们),它确实提供了一个临时解决方案,直到最终解决方案出现。

我不知道 4.5 应该以什么方式解决这个问题。我查看了浏览器定义文件,但看不到它们识别 IE11 的方法(其 UA 字符串中没有“MSIE”),但也许在某个 DLL 中隐藏了一些额外的修复程序。

无论如何,这是我们创建的定义,对我们来说,它立即解决了问题。

在您的项目中,添加(或创建为)App_Browsers/ie.browser,如下:

<!-- Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko -->
<browser id="IE11Preview" parentID="Mozilla">
    <identification>
        <userAgent match="Trident/(?'layoutVersion'\d+).*rv:(?'revision'(?'major'\d+)(\.(?'minor'\d+)?))" />
        <userAgent nonMatch="MSIE" />
    </identification>

    <capabilities>
        <capability name="browser"              value="IE" />
        <capability name="layoutEngine"         value="Trident" />
        <capability name="layoutEngineVersion"  value="${layoutVersion}" />
        <capability name="isColor"              value="true" />
        <capability name="screenBitDepth"       value="8" />
        <capability name="ecmascriptversion"    value="3.0" />
        <capability name="jscriptversion"       value="6.0" />
        <capability name="javascript"           value="true" />
        <capability name="javascriptversion"    value="1.5" />
        <capability name="w3cdomversion"        value="1.0" />
        <capability name="ExchangeOmaSupported" value="true" />
        <capability name="activexcontrols"      value="true" />
        <capability name="backgroundsounds"     value="true" />
        <capability name="cookies"              value="true" />
        <capability name="frames"               value="true" />
        <capability name="javaapplets"          value="true" />
        <capability name="supportsCallback"     value="true" />
        <capability name="supportsFileUpload"   value="true" />
        <capability name="supportsMultilineTextBoxDisplay" value="true" />
        <capability name="supportsMaintainScrollPositionOnPostback" value="true" />
         <capability name="supportsVCard"        value="true" />
        <capability name="supportsXmlHttp"      value="true" />
        <capability name="tables"               value="true" />
        <capability name="supportsAccessKeyAttribute"    value="true" />
        <capability name="tagwriter"            value="System.Web.UI.HtmlTextWriter" />
        <capability name="vbscript"             value="true" />
        <capability name="revmajor"             value="${major}" />
        <capability name="revminor"             value="${minor}" />
    </capabilities>
</browser>

如果您要添加到现有文件,请查找 id="IE10Plus"- 您可能希望将其更改为 id="IE10",因为“Plus”部分不再准确。

正如我所说,如果您可以升级到 4.5,并且它可以解决您的问题 - 太好了。如果你不能,或者它不能,这可能会阻止你直到你能(或直到其他一些修复出现)。

关于asp.net - CrossPostback、AJAX 控件和 ASP.NET 生成的回发适用于 .NET 4.5,而不适用于 IE 11 中的 .NET 4.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18009636/

相关文章:

c# - 使用 NavigateUrl 和 Eval() 的超链接。错误在哪里?

ASP.NET刷新更新面板

c# - 新的 ASP.NET Web 应用程序的体系结构

asp.net-ajax - Ajax脚本管理器和母版页

asp.net - 使用 window.external.Sub1() 从嵌入式 GeckoWebBrowser 调用 VB Sub;

asp.net - 面包屑 SiteMapPath 和 SEO 友好的路由

.net - 如何在 Excel VBA 中使用 .NET 对象?

c# - 如何更改 CodeMaid 添加的默认访问修饰符

c# - .NET 的单点登录

c# - jquery 无法从 C# var 获取变量值