如何从Request.UserAgent获取操作系统?

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

目前,我正在使用Request.UserAgent 。 这个问题是它返回一个对我们的支持人员无益的字符串:

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

我想要做的就是自己拉动操作系统(Windows NT 6.1或用户拥有的任何操作系统),而不需要额外的浏览器信息,因为我已经将其他系统信息分离出来了:

| 用户ID | UserOS | BrowserType | BrowserName | MajorVersion | MinorVersion | IsBeta |

| 11111 | userOS * | * Firefox24.0 * | * * Firefox * * | * * * * * 24 * * * * | * * * * 0 * * * * | * * 0 * * |

是否可以单独获得操作系统?

如果您知道如何从客户端计算机(即Windows 7 vs Windows NT 6.1)获取操作系统友好名称,那么这将使我免于必须创建一个单独的操作系统编号数据库。

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

  Dictionary osList = new Dictionary { {"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]; }