0

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

当我使用同一个 Chrome 实例在这 2 台机器上打开网站时,我得到了不同的结果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

任何想法为什么会发生这种差异?

4

2 回答 2

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
于 2011-04-15T14:20:58.713 回答
0

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

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

于 2011-04-15T14:23:17.183 回答