簡體   English   中英

HttpBrowserCapabilities缺少一些信息?

[英]HttpBrowserCapabilities missing some information?

我想使用Request.Browser屬性( HttpBrowserCapabilities類)來確定客戶端系統的某些屬性。

但是,我似乎遇到了此類的一些限制。 我找不到一些應該相對容易從UserAgent字符串解析的屬性,例如OS版本(對於大多數Windows版本, Platform只會返回WinNT,而對於Vista,XP等則不會),或者是否為x64(僅Win16Win32屬性)。

我本來希望在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM