2014-09-01 74 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所示。如果你有大量的瀏覽器支持,我不會推薦這個。這種方式就是瘋狂。:)