繁体   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