【发布时间】:2016-07-26 13:53:06
【问题描述】:
因此,当微软推出新的浏览器版本时,他们需要对 .NET Framework 运行更新以使其能够识别浏览器版本,否则可能会破坏某些功能。
我正在目睹这一点 - 某些页面只能在兼容性视图中运行,它们也可以在 Chrome 中运行。然后其他页面将无法在兼容性视图中工作,但在浏览器强制时它们可以在 Edge 模式下工作。我们有可怕的标签
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
在一个母版页中,这是我们 10 的入门,但不是我在下面要问的问题。
问题
问题是,我如何在服务器上获得一些确凿的证据,它实际上认为客户端浏览器是什么。
此外,是否有任何关于 ASP.NET 如何使用这些 .browser 文件的信息 - 我如何确定 ASP.NET 如何使用它们来匹配用户代理,以及其他部分是什么。
背景
我们有一个旧的 ASP.NET 网站项目在 VS2013 下运行并以 .NET4 为目标。我在 .NET 版本的机器上安装了 VS2015
我检查了smallestdotnet 以查看我拥有的版本。它说 4.6.1 并给我的用户代理:
Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
在网站上以兼容模式运行时:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E; MS-RTC EA 2)
现在解决方案中的 ASP_Browsers 文件夹不包含任何浏览器定义文件。
我在 C:\Windows\Microsoft.NET\Framework 文件夹下有以下 .browser 文件:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\avantgo.browser
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\cassio.browser
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\Default.browser
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\docomo.browser
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\ericsson.browser
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\EZWap.browser
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\gateway.browser
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\generic.browser
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\goAmerica.browser
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\ie.browser
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\Jataayu.browser
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\jphone.browser
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\legend.browser
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\MME.browser
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\mozilla.browser
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\netscape.browser
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\nokia.browser
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\openwave.browser
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\opera.browser
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\palm.browser
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\panasonic.browser
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\pie.browser
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\webtv.browser
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\winwap.browser
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\xiino.browser
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsers\blackberry.browser
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsers\chrome.browser
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsers\Default.browser
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsers\firefox.browser
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsers\gateway.browser
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsers\generic.browser
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsers\ie.browser
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsers\iemobile.browser
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsers\iphone.browser
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsers\opera.browser
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsers\safari.browser
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsers\ucbrowser.browser
v4.0.30319\Config\Browsers\ie.browser的内容如下:
<browsers>
<browser id="IE" parentID="Mozilla">
<identification>
<userAgent match="MSIE (?'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 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4325) -->
<browser id="IE6Plus" parentID="IE">
<identification>
<capability name="majorversion" match="^[6-9]|\d{2,}$" />
</identification>
<capabilities>
<capability name="jscriptversion" value="5.6" />
<capability name="msdomversion" value="${majorversion}.${minorversion}" />
<capability name="ExchangeOmaSupported" value="true" />
<capability name="activexcontrols" value="true" />
<capability name="backgroundsounds" value="true" />
<capability name="javaapplets" value="true" />
<capability name="supportsVCard" value="true" />
<capability name="supportsAccessKeyAttribute" value="true" />
<capability name="vbscript" value="true" />
</capabilities>
</browser>
<!-- Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0;) -->
<browser id="IE6to9" parentID="IE6Plus">
<identification>
<capability name="majorversion" match="^[6-9]$" />
</identification>
</browser>
<!-- Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0;) -->
<browser id="IE7" parentID="IE6to9">
<identification>
<capability name="majorversion" match="^7$" />
</identification>
<capabilities>
<capability name="jscriptversion" value="5.7" />
</capabilities>
</browser>
<!-- Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729) -->
<browser id="IE8" parentID="IE6to9">
<identification>
<capability name="majorversion" match="^8$" />
</identification>
<capabilities>
<capability name="jscriptversion" value="6.0" />
</capabilities>
</browser>
<!-- Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729) -->
<browser id="IE9" parentID="IE6to9">
<identification>
<capability name="majorversion" match="^9$" />
</identification>
<capabilities>
<capability name="jscriptversion" value="6.0" />
</capabilities>
</browser>
<!-- Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) -->
<browser id="IE10Plus" parentID="IE6Plus">
<identification>
<capability name="majorversion" match="\d{2,}" />
</identification>
<capabilities>
<capability name="jscriptversion" value="6.0" />
</capabilities>
</browser>
<browser id="InternetExplorer" parentID="Mozilla">
<identification>
<userAgent match="Trident/(?'layoutVersion'[7-9]|0*[1-9]\d+)(\.\d+)?;(.*;)?\s*rv:(?'version'(?'major'\d+)(\.(?'minor'\d+)))" />
<userAgent nonMatch="IEMobile" />
<userAgent nonMatch="MSIE " />
</identification>
<capabilities>
<capability name="browser" value="InternetExplorer" />
<capability name="version" value="${version}" />
<capability name="majorversion" value="${major}" />
<capability name="minorversion" value="${minor}" />
<capability name="layoutEngine" value="Trident" />
<capability name="layoutEngineVersion" value="${layoutVersion}" />
<capability name="type" value="InternetExplorer${major}" />
</capabilities>
</browser>
<gateway id="IEbeta" parentID="IE">
<identification>
<capability name="letters" match="^([bB]|ab)" />
</identification>
<capture>
</capture>
<capabilities>
<capability name="beta" value="true" />
</capabilities>
</gateway>
</browsers>
一切都在我的 Windows 7 机器上本地运行。我在跑步:
Windows 7 64-bit SP1.
I have the website running in IIS 7.5.7600.16385.
IE11 (11.0.9600.18230)
在 Web.Config 中启用跟踪后,我得到以下注意信息:
标题集合
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
响应标头集合
X-AspNet-Version 4.0.30319
SERVER_SOFTWARE Microsoft-IIS/7.5
【问题讨论】:
标签: asp.net .net internet-explorer compatibility