IE11预览中未定义“WebForm_DoPostBackWithOptions”

IE11即将到来。 我刚刚安装了开发者预览版。 但是,如果我运行一些我的Web应用程序,并且出现错误, WebForm_DoPostBackWithOptions是未定义的

当我玩Autopostback DropDownList时popup错误。

而且,IE10之前也有类似的问题:

http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx

我有一个与.NET 4.0框架无法正确检测到Internet Explorer 11类似的问题。 以下是我如何解决问题的方法:

安装build议的修补程序没有办法。 在深入研究这个问题之后,我发现尽pipe服务器上安装了http://support.microsoft.com/kb/2836939补丁,但浏览器仍被认为是服务器上版本为0.0的Mozilla。; 经过额外的研究,我发现如果你的网站的app_browsers文件夹中有任何.browser文件,服务器上检测到的版本是错误的,也就是Mozilla 0.0。

要解决此问题,我使用以下内容在app_browsers目录中创build了自定义.browser文件:

 <browsers> <browser id="IE11" parentID="Mozilla"> <identification> <userAgent match="Trident\/7.0; rv:(?'version'(?'major'\d+)(\.(?'minor'\d+)?)(?'letters'\w*))(?'extra'[^)]*)" /> <userAgent nonMatch="IEMobile" /> </identification> <capture> <userAgent match="Trident/(?'layoutVersion'\d+)" /> </capture> <capabilities> <capability name="browser" value="IE" /> <capability name="layoutEngine" value="Trident" /> <capability name="layoutEngineVersion" value="${layoutVersion}" /> <capability name="extra" value="${extra}" /> <capability name="isColor" value="true" /> <capability name="letters" value="${letters}" /> <capability name="majorversion" value="${major}" /> <capability name="minorversion" value="${minor}" /> <capability name="screenBitDepth" value="8" /> <capability name="type" value="IE${major}" /> <capability name="version" value="${version}" /> </capabilities> </browser> <!-- Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11,0) like Gecko --> <browser id="IE110" parentID="IE11"> <identification> <capability name="majorversion" match="11" /> </identification> <capabilities> <capability name="ecmascriptversion" value="3.0" /> <capability name="jscriptversion" value="5.6" /> <capability name="javascript" value="true" /> <capability name="javascriptversion" value="1.5" /> <capability name="msdomversion" value="${majorversion}.${minorversion}" /> <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" /> </capabilities> </browser> </browsers> 

下面的文章中提出了一种类似的方法: IE 11 + Windows 8.1中的doPostback失败

我想澄清这个问题只发生在.NET 4.0上。 在.NET 4.5中,浏览器及其版本被正确检测到。

最后,我find了解决办法,感谢Scott Hunter的build议。

如果您想解决IE11问题,​​请安装下面的修补程序。

我尝试了所有在互联网上列出的补丁,包括这里列出的补丁。 实际上似乎工作的唯一的东西是在服务器上安装.NET 4.5框架。

在这里获取: http : //www.microsoft.com/en-us/download/details.aspx?id=30653

希望这节省了我在这一个失去了几个小时的人。

对于任何人都难以理解为什么user2919107的答案上面(把IE11的自定义.browser文件放在你的App_Browsers文件夹中)不起作用,请尝试触摸App_Browsers文件夹中现有的.browser文件。

简单地创build/复制IE11 .browser文件不起作用。 您需要触摸现有的.browser文件,以便重新编译App_Browsers内容并将其考虑在内。

是的,这是相同的核心问题,并且在2013年6月的ASP.NET修补程序中得到修复。 请参阅http://blogs.msdn.com/b/ieinternals/archive/2013/09/21/internet-explorer-11-user-agent-string-ua-string-sniffing-compatibility-with-gecko-webkit.aspx

如果您正在运行Windows 2003并且无法应用任何修补程序; 尝试将ASP.NET页面的Page_Init中Page对象的ClientTarget属性设置为“uplevel”。

 protected void Page_Init(object sender, EventArgs e) { Page.ClientTarget = "uplevel"; } 

我也有这个问题。 我尽量不要安装.NET 4.5。 我只是在升级到.NET 4.5之前寻找短期解决scheme。 Panagiotis Poulos对于新的.browser文件是正确的。 我触摸了一个现有的.browser文件,我现在正在识别新的IE .browser文件。 据我所知,一切都可以正常工作。

简而言之,按照这些家伙的说明,但如果你尝试.browser的方法,记得上传自己的.browser文件后,触摸现有的.browser文件。

find了一个临时的解决办法。

我尝试应用此修补程序,但我无法获取要安装的修补程序。 错误是:kb2600088不适用,或被您的计算机上的另一个条件阻止。 可能由于.NET 4.5,我google了,但我不想卸载.NET 4.5,所以我没有按照。

因此,要解决原来的问题,请启动IE11并按F12键进入开发者控制台。 在“仿真”选项卡下,将文档模式设置为“10”,并在用户代理string下设置为“10”。 我相信它模仿IE 10,它完美的工作,而不必碰到这个错误。

这只是一个工作。 不是一个修复。 希望它能帮助那些试图完成工作的人。

如果您下载了IE 11,但使用了Windows附带的原始IE浏览器,则浏览器的用户代理有点不同, 最高的答案将不起作用。

你只需要改变这一行:

 <userAgent match="Trident\/7.0; rv:(?'version'(?'major'\d+)(\.(?'minor'\d+)?)(?'letters'\w*))(?'extra'[^)]*)" /> 

对此:

 <userAgent match="Trident\/7.0;(?'someGarbage'[^'rv:']*) rv:(?'version'(?'major'\d+)(\.(?'minor'\d+)?)(?'letters'\w*))(?'extra'[^)]*)" />