好的,所以我正在开发一个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与Windows NT 6.1)获取操作系统友好名称,则可以获得积分,这将使我不必创建单独的操作系统编号数据库。
答案 0 :(得分:4)
用户代理不会给你一个友好的名字,所以你需要维护一个列表,这应该有用......
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];
}