2014-09-01 49 views
0

Accroding到MSDNHttpCapabilitiesBase.Type属性:HttpCapabilitiesBase.Type物业 - 可靠性

获取浏览器的名称和主(整数)版本号。

例如,如果客户端使用的Chrome版本36.0.1985.143,然后
Request.Browser.Type == "Chrome36"

现在,如何可靠是这个信息?

  • 它支持哪些浏览器?
  • 浏览器是否正确显示?

注意:用户在这里篡改他们的请求不用担心。

回答

2

简短的回答是“不是很”,但取决于你需要什么,这可能不是你的问题。

HttpCapabilitiesBase通过将浏览器的用户代理字符串与.NET Framework附带的浏览器信息进行匹配来工作。这些信息存储在一个.browser文件集合中。根据该平台,您使用的.NET Framework版本,你可以找到这些文件:

C:\ WINDOWS \ Microsoft.NET \框架\ V2.0.50727 \ CONFIG \浏览器 C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v2.0.50727 \ CONFIG \浏览器 C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \浏览器 C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \浏览器

Microsoft通过服务包,hotfixesnew releases很少更新这些文件,但这些更新不是特别频繁。因此,只有在现有浏览器更改其用户代理字符串或启动了带有新用户代理的新浏览器时才需要进行更新。虽然在桌面浏览器世界中这种情况很少发生,但在移动浏览器领域这是一个更大的问题。

移动浏览器的浏览器支持经常是found lagging。如果适当检测移动浏览器及其功能对您而言非常重要,那么您将需要使用第三方设备数据库。

ASP.net Mobile网站链接到51Degree的Foundation项目,其中保持经常更新device capability database。请注意,differing capabilities有免费和商业版本。

类似的选项是WURFL设备存储库,该存储库也提供免费和商业许可证。另外,如果您只想维护.NET中不支持的非常小的已知浏览器子集的支持,则可以实现并使用您自己的BrowserCapabilitiesProvider,如this answer中用户Doug Domeny所示。如果你有大量的浏览器支持,我不会推荐这个。这种方式就是疯狂。:)