Iis IE 11的应用程序浏览器定义文件
这是Windows 8.1上IE 11的用户代理(预览版) 我正在为应用程序中的App\u Browsers文件夹或c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\Browsers查找.browser文件,以正确检测IE11 由于用户代理已从包含“MSIE”更改为此IE10用户代理Iis IE 11的应用程序浏览器定义文件,iis,user-agent,internet-explorer-11,Iis,User Agent,Internet Explorer 11,这是Windows 8.1上IE 11的用户代理(预览版) 我正在为应用程序中的App\u Browsers文件夹或c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\Browsers查找.browser文件,以正确检测IE11 由于用户代理已从包含“MSIE”更改为此IE10用户代理 Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; Touch) 我尝试
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; Touch)
我尝试了大约100种变体,但没有成功。我发现IIS上的IE11也存在同样的问题 IE10有一个官方的MS补丁,但是,他们似乎只为该显式版本修复了它,而不是为浏览器的未来(以及某种预期)版本修复了它 Scott Hanselman为IE10提供了一个本地项目,也许他会为IE11更新它 是指向.NET/IIS中IE10修补程序的链接 IE 10的最新版本 关于不需要使用.browsers文件的评论,我完全同意,但是,这个问题(我相信)是IIS/.NET 4的问题 干杯
Andy.NET Framework 4.5.1更新添加了新的浏览器定义文件:我创建了一个包含
<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>
这对我很有效。根据Sistemas infoe对此问题的回答:
为什么需要.browser文件?浏览器嗅探因破坏东西而臭名昭著,而.Net更因浏览器嗅探严重错误而臭名昭著(这是我们在Opera工作时在Opera中更改UA字符串的全部原因,因为它将Opera 10检测为Opera 1)。如果您想使用浏览器嗅探,可能还有另一种方法。@DavidStorey:原因之一可能是.NET通过检测浏览器来确定什么适用于客户端。当IIS无法识别IE11时,它不允许会话cookie。我认为这是早期修补程序的更新版本。更改为Hello我进行了这些更改它可以在我的本地计算机上运行(使用IE11的windows 7),但更改不会反映在服务器上(windows server 2008 R2)。
<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>