ASP.NET:Chrome浏览器检测不一致

时间:2011-04-15 13:51:03

标签: asp.net browsercaps

我正在两台计算机上测试ASP.NET 3.5应用程序:一台是Windows 7 x64,另一台是Windows Server 2008 x64。

当我使用相同的Chrome实例打开这两台计算机上的网站时,HttpBrowserCapabilities.Browser会得到不同的结果:在Windows 7计算机上我得到browser.Name = "appleMac-safari",而在Windows Server计算机上我得到browser.Name = "applewebkit"

两台机器都安装了相同的(AFAIK)asp.net应用程序,相同的machine.config文件,而*.browser文件在C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\Browsers上也是相同的

为什么会出现这种差异?

2 个答案:

答案 0 :(得分:1)

使用以下方法检测Chrome,因为它更可靠

if (Request.UserAgent.Contains("Chrome"))
{
    ....
}

UserAgent值为:

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16

答案 1 :(得分:0)

我会查看浏览器发送的用户代理字符串。很可能,用户代理字符串在这两个平台上的chrome版本中不一样。有很多不同之处。

此外,我想补充一点,在大多数情况下,服务器端浏览器嗅探的用途非常有限,因为正如您所见,它不是特别可靠并且可以轻易伪造。如果您希望以不同方式设置样式或调整某些客户端行为,使用Modernizr之类的javascript包进行特征检测是一种更加强大的方法。