2011-04-15 47 views
0

我在两台机器上测试ASP.NET 3.5应用程序:一台是Windows 7 x64,另一台是Windows Server 2008 x64。ASP.NET:Chrome浏览器不一致的检测

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

两款机器都是有asp.net应用程序的相同(据我所知)安装,同样machine.config文件和文件*.browser也相同于C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\Browsers

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

回答

1

使用以下方法来检测浏览器,因为它是更可靠的

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 
0

我想看看用户代理字符串浏览器中发送机会在这两个平台上,用户代理字符串与该版本的chrome不同。有很多小的差异。另外,我想补充一点,在大多数情况下,服务器端浏览器嗅探的用途非常有限,因为如您所见,它不是特别可靠,并且可以很容易伪造。如果您希望以不同的方式设计风格或调整某些客户端行为,那么使用类似Modernizr这样的javascript软件包来执行特征检测是一种更加稳健的方法。

+0

谢谢。将检查Modernizr。但我使用相同的浏览器实例(仅限不同的标签)访问这两个网站,所以它必须是相同的用户代理,对吧? – rodbv 2011-04-15 14:44:19

+0

啊,是的,它确定_应该是同一个用户代理。我误解了你的问题,关于应用程序的位置以及浏览器的位置。它仍然不会伤害比较useragent字符串,以及浏览器发送的任何其他标题,以查看是否有任何差异。 – cdeszaq 2011-04-15 14:52:40