可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I am getting blank page in IE 11 in Windows 8.1 Preview.After Inspecting the page I assumed that following code might be the culprit,since after these line there is not further line displayed debugger window, So code is breaking after this line.
IE 11
<!-- <form name="aspnetForm" method="post" action="Register" id="aspnetForm">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTkwNDQ3O
I tried the same page in Chrome Version 29.0.1547.57 m in Windows 8.1 Preview It is working fine there and I get following code.
CHROME
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['aspnetForm'];
if (!theForm) {
theForm = document.aspnetForm;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
-->
回答1:
Its likely that you're tripping over an issue with the browser detection on IIS. Scott Hanselman wrote about this in the past with IE10, and the problem you're having does appear to mirror his description.
A hotfix available at the time, http://support.microsoft.com/kb/2600088, stated:
By default, ASP.NET uses sniffing technology for the user agent string to detect browsers. The browser definition files cover a certain range of browser versions. However, as the version numbers increase, ASP.NET might not recognize new versions of a browser by using the user agent string. In this case, ASP.NET might handle these versions as an unknown browser. For example, ASP.NET cannot recognize Windows Internet Explorer 10 that has the following user agent string:
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)
However, this hotfix appears not to apply to IE11 due to a new format of user agent. There is a NuGet package named App_Browsers that may contain a fix, but until then you will have to write your own rule.
MSDN Browser Definition File Schema gives details on how to write a browser detection file; you will find your existing files in C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsers.
According to MSDN Compatibilty Changes in IE11 Preview, the user agent for IE11 in Preview is:
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
which is not recognised by the standard IE regex (hence the problem you're seeing), however the following should work instead:
Trident\/7.0; rv:(?'version'(?'major'\d+)(\.(?'minor'\d+)?)(?'letters'\w*))(?'extra'[^)]*)
I've not tested it in a live environment, but this does parse the major and minor version correctly, which are key to solving the original problem - try adding this as another match in the file ie.browser
.
Note that a similar question was asked on MSDN recently - it may be worthwhile following and contributing to that.
回答2:
We have created a new "ie11.browser" file in C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsers and now ASP.NET is working correctly. After creating the file we run "aspnet_regbrowsers -i" and restarted IIS.
We simply copied the capabilities of IE6-9. We do not know if this is accurate, but ASP.NET is now working with Explorer 11 running on Windows 8.1
Our ie11.browser file looks like this:
<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>
回答3:
I've experienced similar issue and would like to share my findings and how I've resolve it.
Straight to the problem:
The .NET framework 4.0 doesn't recognize Internet Explorer 11 browser properly. This could be verifyied on a simple web site and a page displaying the browser information from the request by calling:
Request.Browser.Browser
Request.Browser.Version
The result without any patches is:
Mozilla 0.0
Once applied the patch mentioned on the following article the browser details become:
IE 11.0
However this approach is working correctly on a website that has no custom .browser files. I found that if you have even a single empty file in the system app_browsers folder in your site then the browser and the version become wrong again namely Mozilla 0.0 (although the patch for the .NET 4.0 has been already installed).
Digging more in to the issue I managed to workaround this unwanted behavior by including the code provided in the previous post by Sistemas-infoe into a .browser file and put it into the website's app_browsers folder.
I would like to clarify that the issue is happening only with .NET 4.0, while with .NET 4.5 the browser and its version are detected correctly.
I hope this helps.
Best Regards,
Mihail
回答4:
The Microsoft hotfix '2600088' definitely does NOT work, so you'll have to take the .browser file route.
With the latest version of IE11, you'll need to make a small revision to the ie.browser file RegEx posted by Sistemas-infoe above. Ensure you allow more characters in the UA string between the semi-colon and space. If your RegEx skills are terrible (much like mine), that's a period then a star.
OLD:
<userAgent match="Trident\/7.0; rv:(?'version'(?'major'\d+)(\.(?'minor'\d+)?)(?'letters'\w*))(?'extra'[^)]*)" />
NEW:
<userAgent match="Trident\/7.0;.*rv:(?'version'(?'major'\d+)(\.(?'minor'\d+)?)(?'letters'\w*))(?'extra'[^)]*)" />
You can test if ASP.Net is recognizing the revision and the .browser file using:
Response.Write (Request.Browser.MajorVersion)
If that returns 11, your JS error should be gone. VOILA!
Update:
A second MS patch was released in October 2013. I was able to remove the .browser file now and simply use the patch. So far working well. - See http://support.microsoft.com/kb/2836939
回答5:
Just to add another option into the mix. This /.browser file seems to have worked for me.
http://blogs.telerik.com/aspnet-ajax/posts/13-12-19/how-to-get-your-asp.net-application-working-in-ie11
回答6:
I used the above ie11.browser file mentioned above by Sistemas-infoe, put it in App_Browser folder and it did work on Windows 2003, II6.
For pre-compiled code, make sure you delete __browserCapabilitiesCompiler.compiled from bin folder to get it to recognize the new file.
What did not work was solution given here http://support.microsoft.com/kb/2836939/en-us
Also, putting this file in C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsers and registering it using aspnet_regbrowsers.exe -i did not work.
Almost forgot to mention. If this solution had not worked, next I would have tried this.
http://jwcooney.com/2013/11/19/asp-net-doesnt-detect-ie11/
回答7:
I found the easiest fix was to install .Net 4.5.1 and I didn't even need to change the version our application is using!
回答8:
Different ISP will lock down their servers to a specific Build and IGNORE valuable fixes.
FASTHOSTS in the UK have their .net 3.5 servers locked down and have not applied IE Fixes leaving it down to the programmer to introduce Browser files as necessary.
It is common policy to lock the servers down with the cry from the ISP "It ensures a stable environment for the programmer!"
The following was gleamed from Scott Hanselman website / detailed solution when IE10 was about to explode onto the scene and recently adjusted. Without it, for example, Ajax toolkit watermark extenders for text boxes do not apply classes properly.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<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>
<!-- Below is older entry -->
<browser id="IE5to9" parentID="IE">
<identification>
<capability name="majorversion" match="^[5-9]|[1-9]\d+" />
</identification>
<capture>
</capture>
<capabilities>
<capability name="activexcontrols" value="true" />
<capability name="backgroundsounds" value="true" />
<capability name="cookies" value="true" />
<capability name="css1" value="true" />
<capability name="css2" value="true" />
<capability name="ecmascriptversion" value="1.2" />
<capability name="frames" value="true" />
<capability name="javaapplets" value="true" />
<capability name="javascript" value="true" />
<capability name="jscriptversion" value="5.0" />
<capability name="msdomversion" value="${majorversion}${minorversion}" />
<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="tagwriter" value="System.Web.UI.HtmlTextWriter" />
<capability name="vbscript" value="true" />
<capability name="w3cdomversion" value="1.0" />
<capability name="xml" value="true" />
</capabilities>
</browser>
<browser id="IE6to9" parentID="IE5to9">
<identification>
<capability name="majorversion" match="[6-9]|[1-9]\d+" />
</identification>
<capture>
</capture>
<capabilities>
<capability name="jscriptversion" value="5.6" />
<capability name="ExchangeOmaSupported" value="true" />
</capabilities>
</browser>
<!-- sample UA "Mozilla/4.0 (compatible; MSIE 6.0; Windows 95; PalmSource; Blazer 3.0) 16;160x160" -->
<browser id="Treo600" parentID="IE6to9">
<identification>
<userAgent match="PalmSource; Blazer" />
</identification>
<capture>
<userAgent match="PalmSource; Blazer 3\.0\)\s\d+;(?'screenPixelsHeight'\d+)x(?'screenPixelsWidth'\d+)$" />
</capture>
<capabilities>
<capability name="browser" value="Blazer 3.0" />
<capability name="cachesAllResponsesWithExpires" value="false" />
<capability name="canInitiateVoiceCall" value="true" />
<capability name="canRenderEmptySelects" value="true" />
<capability name="canSendMail" value="true" />
<capability name="cookies" value="true" />
<capability name="ecmascriptversion" value="1.1" />
<capability name="hidesRightAlignedMultiselectScrollbars" value="false" />
<capability name="inputType" value="keyboard" />
<capability name="isColor" value="true" />
<capability name="javascript" value="true" />
<capability name="jscriptversion" value="0.0" />
<capability name="maximumHrefLength" value="10000" />
<capability name="maximumRenderedPageSize" value="300000" />
<capability name="mobileDeviceManufacturer" value="" />
<capability name="mobileDeviceModel" value="" />
<capability name="preferredImageMime" value="image/jpeg" />
<capability name="preferredRenderingMime" value="text/html" />
<capability name="preferredRenderingType" value="html32" />
<capability name="preferredRequestEncoding" value="utf-8" />
<capability name="preferredResponseEncoding" value="utf-8" />
<capability name="rendersBreaksAfterHtmlLists" value="true" />
<capability name="requiredMetaTagNameValue" value="PalmComputingPlatform" />
<capability name="requiresAttributeColonSubstitution" value="false" />
<capability name="requiresContentTypeMetaTag" value="false" />
<capability name="requiresControlStateInSession" value="false" />
<capability name="requiresDBCSCharacter" value="false" />
<capability name="requiresFullyQualifiedRedirectUrl" value="false" />
<capability name="requiresHtmlAdaptiveErrorReporting" value="false" />
<capability name="requiresLeadingPageBreak" value="false" />
<capability name="requiresNoBreakInFormatting" value="false" />
<capability name="requiresOutputOptimization" value="false" />
<capability name="requiresPostRedirectionHandling" value="false" />
<capability name="requiresPragmaNoCacheHeader" value="true" />
<capability name="requiresUniqueFilePathSuffix" value="true" />
<capability name="requiresUniqueHtmlCheckboxNames" value="false" />
<capability name="screenBitDepth" value="24" />
<capability name="screenCharactersHeight" value="13" />
<capability name="screenCharactersWidth" value="32" />
<capability name="screenPixelsHeight" value="${screenPixelsHeight}" />
<capability name="screenPixelsWidth" value="${screenPixelsWidth}" />
<capability name="supportsAccessKeyAttribute" value="true" />
<capability name="supportsBodyColor" value="true" />
<capability name="supportsBold" value="true" />
<capability name="supportsCharacterEntityEncoding" value="true" />
<capability name="supportsCss" value="false" />
<capability name="supportsDivAlign" value="true" />
<capability name="supportsDivNoWrap" value="false" />
<capability name="supportsEmptyStringInCookieValue" value="true" />
<capability name="supportsFileUpload" value="false" />
<capability name="supportsFontColor" value="true" />
<capability name="supportsFontName" value="false" />
<capability name="supportsFontSize" value="true" />
<capability name="supportsImageSubmit" value="true" />
<capability name="supportsIModeSymbols" value="false" />
<capability name="supportsInputIStyle" value="false" />
<capability name="supportsInputMode" value="false" />
<capability name="supportsItalic" value="true" />
<capability name="supportsJPhoneMultiMediaAttributes" value="false" />
<capability name="supportsJPhoneSymbols" value="false" />
<capability name="supportsMultilineTextBoxDisplay" value="true" />
<capability name="supportsQueryStringInFormAction" value="true" />
<capability name="supportsRedirectWithCookie" value="true" />
<capability name="supportsSelectMultiple" value="true" />
<capability name="supportsUncheck" value="true" />
<capability name="tables" value="true" />
<capability name="type" value="Handspring Treo 600" />
</capabilities>
<controlAdapters />
</browser>
<browser id="IE5" parentID="IE5to9">
<identification>
<capability name="majorversion" match="^5$" />
</identification>
</browser>
<browser id="IE50" parentID="IE5">
<identification>
<capability name="minorversion" match="^\.0"/>
</identification>
<controlAdapters>
<adapter controlType="System.Web.UI.WebControls.Menu"
adapterType="System.Web.UI.WebControls.Adapters.MenuAdapter" />
</controlAdapters>
</browser>
<browser id="IE55" parentID="IE5">
<identification>
<capability name="minorversion" match="^\.5"/>
</identification>
<capabilities>
<capability name="jscriptversion" value="5.5" />
<capability name="ExchangeOmaSupported" value="true" />
</capabilities>
</browser>
<browser id="IE5to9Mac" parentID="IE5to9">
<identification>
<capability name="platform" match="(MacPPC|Mac68K)" />
</identification>
<controlAdapters>
<adapter controlType="System.Web.UI.WebControls.Menu"
adapterType="System.Web.UI.WebControls.Adapters.MenuAdapter" />
</controlAdapters>
</browser>
<browser id="IE4" parentID="IE">
<identification>
<userAgent match="MSIE 4" />
</identification>
<capture>
</capture>
<capabilities>
<capability name="activexcontrols" value="true" />
<capability name="backgroundsounds" value="true" />
<capability name="cdf" value="true" />
<capability name="cookies" value="true" />
<capability name="css1" value="true" />
<capability name="ecmascriptversion" value="1.2" />
<capability name="frames" value="true" />
<capability name="javaapplets" value="true" />
<capability name="javascript" value="true" />
<capability name="jscriptversion" value="3.0" />
<capability name="msdomversion" value="4.0" />
<capability name="supportsFileUpload" value="true" />
<capability name="supportsMultilineTextBoxDisplay" value="false" />
<capability name="supportsMaintainScrollPositionOnPostback" value="true" />
<capability name="tables" value="true" />
<capability name="tagwriter" value="System.Web.UI.HtmlTextWriter" />
<capability name="vbscript" value="true" />
</capabilities>
<controlAdapters>
<adapter controlType="System.Web.UI.WebControls.Menu"
adapterType="System.Web.UI.WebControls.Adapters.MenuAdapter" />
</controlAdapters>
</browser>
<browser id="IE3" parentID="IE">
<identification>
<capability name="majorversion" match="^3" />
</identification>
<capture>
</capture>
<capabilities>
<capability name="activexcontrols" value="true" />
<capability name="backgroundsounds" value="true" />
<capability name="cookies" value="true" />
<capability name="css1" value="true" />
<capability name="ecmascriptversion" value="1.0" />
<capability name="frames" value="true" />
<capability name="javaapplets" value="true" />
<capability name="javascript" value="true" />
<capability name="jscriptversion" value="1.0" />
<capability name="supportsMultilineTextBoxDisplay" value="false" />
<capability name="tables" value="true" />
<capability name="vbscript" value="true" />
</capabilities>
<controlAdapters>
<adapter controlType="System.Web.UI.WebControls.Menu"
adapterType="System.Web.UI.WebControls.Adapters.MenuAdapter" />
</controlAdapters>
</browser>
<browser id="IE3win16" parentID="IE3">
<identification>
<userAgent match="16bit|Win(dows 3\.1|16)" />
</identification>
<capture>
</capture>
<capabilities>
<capability name="activexcontrols" value="false" />
<capability name="javaapplets" value="false" />
</capabilities>
</browser>
<browser id="IE3win16a" parentID="IE3win16">
<identification>
<capability name="extra" match="^a" />
</identification>
<capture>
</capture>
<capabilities>
<capability name="beta" value="true" />
<capability name="javascript" value="false" />
<capability name="vbscript" value="false" />
</capabilities>
</browser>
<browser id="IE3Mac" parentID="IE3">
<identification>
<userAgent match="PPC Mac|Macintosh.*(68K|PPC)|Mac_(PowerPC|PPC|68(K|000))" />
</identification>
<capture>
</capture>
<capabilities>
<capability name="activexcontrols" value="false" />
<capability name="vbscript" value="false" />
</capabilities>
</browser>
<gateway id="IE3AK" parentID="IE3">
<identification>
<capability name="extra" match="; AK;" />
</identification>
<capture>
</capture>
<capabilities>
<capability name="ak" value="true" />
</capabilities>
</gateway>
<gateway id="IE3SK" parentID="IE3">
<identification>
<capability name="extra" match="; SK;" />
</identification>
<capture>
</capture>
<capabilities>
<capability name="sk" value="true" />
</capabilities>
</gateway>
<browser id="IE2" parentID="IE">
<identification>
<capability name="majorversion" match="^2" />
</identification>
<capture>
</capture>
<capabilities>
<capability name="backgroundsounds" value="true" />
<capability name="cookies" value="true" />
<capability name="tables" value="true" />
</capabilities>
<controlAdapters>
<adapter controlType="System.Web.UI.WebControls.Menu"
adapterType="System.Web.UI.WebControls.Adapters.MenuAdapter" />
</controlAdapters>
</browser>
<browser id="IE1minor5" parentID="IE">
<identification>
<capability name="version" match="^1\.5" />
</identification>
<capture>
</capture>
<capabilities>
<capability name="cookies" value="true" />
<capability name="tables" value="true" />
</capabilities>
<controlAdapters>
<adapter controlType="System.Web.UI.WebControls.Menu"
adapterType="System.Web.UI.WebControls.Adapters.MenuAdapter" />
</controlAdapters>
</browser>
<gateway id="IEAOL" parentID="IE">
<identification>
<capability name="extra" match="; AOL" />
</identification>
<capture>
</capture>
<capabilities>
<capability name="aol" value="true" />
<capability name="frames" value="true" />
</capabilities>
</gateway>
<gateway id="IEbeta" parentID="IE">
<identification>
<capability name="letters" match="^([bB]|ab)" />
</identification>
<capture>
</capture>
<capabilities>
<capability name="beta" value="true" />
</capabilities>
</gateway>
<gateway id="IEupdate" parentID="IE">
<identification>
<capability name="extra" match="; Update a;" />
</identification>
<capture>
</capture>
<capabilities>
<capability name="authenticodeupdate" value="true" />
</capabilities>
</gateway>
回答9:
Only it was removed xhtmlConformance tag of Web.Config.