[英]HttpBrowserCapabilities missing some information?
我想使用Request.Browser
屬性( HttpBrowserCapabilities
類)來確定客戶端系統的某些屬性。
但是,我似乎遇到了此類的一些限制。 我找不到一些應該相對容易從UserAgent
字符串解析的屬性,例如OS版本(對於大多數Windows版本, Platform
只會返回WinNT,而對於Vista,XP等則不會),或者是否為x64(僅Win16
和Win32
屬性)。
我本來希望在HttpBrowserCapabilities
類中看到這些屬性,因為那里還有大多數其他用戶代理信息。 我想念什么嗎? 我可以在其他地方找到此信息嗎? 還是我應該自己從UserAgent字符串中解析它?
在ASP.NET 2.0和更高版本中,不建議使用browserCaps元素。 除非使用的是.NET 1或1.1,否則應使用瀏覽器定義文件。
將* App_Browsers *文件夾添加到您的站點(如果尚不存在),並創建一個名為“ Platforms.browser ”的新文件。 (名稱無關緊要,只有擴展名。)
打開新的.browser文件,然后粘貼以下內容:
<browsers>
<gateway id="PlatformWinVista" parentID="PlatformWinnt">
<identification>
<userAgent match="Windows NT 6\.0" />
</identification>
<capabilities>
<capability name="platform" value="Windows Vista" />
</capabilities>
</gateway>
<gateway id="PlatformWin7" parentID="PlatformWinnt">
<identification>
<userAgent match="Windows NT 6\.1" />
</identification>
<capabilities>
<capability name="platform" value="Windows 7" />
</capabilities>
</gateway>
</browsers>
您可能需要觸發網站的重新編譯,以使新文件生效。
注意:這些節點必須是網關節點,而不是瀏覽器節點。 如果您嘗試將它們創建為瀏覽器節點,則在站點重新編譯時會出現解析器錯誤 。
您可以通過在machine.config / web.config文件中添加/擴展browserCaps配置部分來擴展HttpBrowserCapabilities。 例如,要更准確地檢測操作系統版本,請在配置文件中添加以下內容:
<system.web>
<browserCaps>
<use var="HTTP_USER_AGENT" />
<filter>
<case match="Windows NT 6.1">
platform=Windows7
</case>
</filter>
</browserCaps>
</system.web>
如果使用在Windows 7上運行Mozilla的網站訪問該網站(UserAgent =“ Mozilla / 5.0(Windows NT 6.1; WOW64; rv:2.0.1)Gecko / 20100101 Firefox / 4.0.1”),您將看到Request.Browser .Platform將顯示“ Windows7”。 請參閱此處以獲取更多信息: http : //msdn.microsoft.com/zh-cn/library/sk9az15a%28v=vs.71%29.aspx
在browserCaps部分中添加一個正則表達式以匹配WOW64字符串,以檢測客戶端平台是否為64位(我不確定與在64位上運行的非Windows平台等效的WOW64)。
...當然,通過在元素中使用正則表達式,除了實際解析UserAgent字符串外,您什么都沒有做。 但是,您可以在網上輕松找到預定義的browserCaps(例如, http: //owenbrady.net/browsercaps/CodeProject.xml)。
請記住,盡管此功能非常強大,但仍不是100%准確。 例如,Windows 7和Windows Server 2008 R2都將Windows NT 6.1作為平台返回。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.