【问题标题】:How do I get just the OS from Request.UserAgent?如何从 Request.UserAgent 获取操作系统?
【发布时间】:2013-11-11 21:52:31
【问题描述】:

好的,所以我正在开发一个 ASP.Net 网站(背后的 C# 代码),出于故障排除原因(我们大多数需要技术支持的客户不知道他们使用的是什么操作系统/浏览器/浏览器版本),我们想记录一个“系统配置文件”,这样我们就可以更轻松地解决与操作系统/浏览器相关的问题。

目前,我正在使用Request.UserAgent。这样做的问题是它返回的字符串对我们的支持人员没有帮助:

Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0

我想要做的是只提取操作系统(Windows NT 6.1,或用户拥有的任何操作系统),而不需要额外的浏览器信息,因为我已经在隔离其他系统信息:

|用户名 |用户操作系统 |浏览器类型 |浏览器名称 |主要版本 |次要版本 |贝塔 |

| 11111 |用户操作系统* | * 火狐24.0 * | * * 火狐* * |* * * * * 24 * * * * |* * * * 0 * * * * | * * 0 * *||

是否可以自己获取操作系统?

如果您知道如何从客户端计算机(即 Windows 7 与 Windows NT 6.1)获取操作系统友好名称,则可以加分,这将使我不必创建单独的操作系统编号数据库。

【问题讨论】:

标签: c# asp.net operating-system


【解决方案1】:

用户代理不会给你一个友好的名字,所以你需要维护一个列表,这样的东西应该可以工作......

        Dictionary<string, string> osList = new Dictionary<string, string>
        {
            {"Windows NT 6.3", "Windows 8.1"},
            {"Windows NT 6.2", "Windows 8"},
            {"Windows NT 6.1", "Windows 7"},
            {"Windows NT 6.0", "Windows Vista"},
            {"Windows NT 5.2", "Windows Server 2003"},
            {"Windows NT 5.1", "Windows XP"},
            {"Windows NT 5.0", "Windows 2000"}
        };

        string userAgentText = HttpContext.Current.Request.UserAgent;

        if (userAgentText != null)
        {
            int startPoint = userAgentText.IndexOf('(') + 1;
            int endPoint = userAgentText.IndexOf(';');

            string osVersion = userAgentText.Substring(startPoint, (endPoint - startPoint));
            string friendlyOsName = osList[osVersion];
        }

【讨论】:

  • 谢谢,第二部分正是我要找的。就友好名称而言,维护列表不是一个可行的选择,因为需要考虑的操作系统太多(Windows、Apple、Linux/Unix、Mobile)必须包含在内,尤其是在代码中每次更新列表时,您都必须重新编译代码。我相信能够得到版本号(就像你所做的那样),然后用谷歌搜索它以找出操作系统必须是它的工作方式。非常感谢。
  • 没问题。此列表可能会对您有所帮助,因为您必须查看每个操作系统的详细信息 user-agent-string.info/list-of-ua/os
猜你喜欢
  • 1970-01-01
  • 2013-02-19
  • 1970-01-01
  • 2015-11-16
  • 2010-10-08
  • 2021-05-15
  • 2012-04-18
  • 2016-04-18
  • 1970-01-01
相关资源
最近更新 更多