我在哪里可以获得Request.Browser.Platform项目?

时间:2010-05-26 07:38:23

标签: c# asp.net

我希望在我的数据库中预先列出最常见的操作系统列表,并且所有非默认操作系统都列为其他操作系统。问题是我不知道操作系统在Request.Browser对象中调用了什么。

列表我想拥有WinXP,Vista,Win7,Linux,MacOS等......

你们是否知道Request.Browser.Platform中这些操作系统的确切名称,或者我可以从哪里获取值列表?

2 个答案:

答案 0 :(得分:3)

它实际上是用户代理字符串的一部分:

http://en.wikipedia.org/wiki/User_agent

答案 1 :(得分:2)

回答我自己,也许我的问题是错的。我想要从Request.Browser.Platform或Request [“HTTP_USER_AGENT”]返回的默认操作系统列表,这样我就可以将它们输入到数据库中。

我已经获得了列表并编写了一个函数来检查操作系统用户使用的是什么类型。

    public static string getOsFromUserAgent(string userAgent)
{
    string visitorOS = "other";
    Dictionary<string, string> osNamesAndRegexes = new Dictionary<string, string>();
    osNamesAndRegexes.Add("Windows 98", "(Windows 98)|(Win98)");
    osNamesAndRegexes.Add("Windows XP", "(Windows NT 5.1)|(Windows XP)");
    osNamesAndRegexes.Add("Windows Vista", "(Windows NT 6.0)");
    osNamesAndRegexes.Add("Windows 7", "(Windows NT 7.0)");
    osNamesAndRegexes.Add("Linux", "(Linux)|(X11)");
    osNamesAndRegexes.Add("Mac OS", "(Mac_PowerPC)|(Macintosh)");

    foreach (KeyValuePair<string, string> kvpPair in osNamesAndRegexes)
    {
        if (Regex.IsMatch(userAgent, kvpPair.Value, System.Text.RegularExpressions.RegexOptions.IgnoreCase))
        {
            visitorOS = kvpPair.Key;
        }
    }
    return visitorOS;
}