首页 > 解决方案 > 如何检查用户平台是否是asp.net mvc中的windows

问题描述

如何在asp.net mvc中检查用户平台是windows还是web还是android还是IOS?

我认为我们可以使用类似的东西

Request.Browser.Platform

但不知道如何在平台是 windows 时特别检查用户平台(我的意思是桌面应用程序不是 web 或移动)

谢谢

我试过这段代码

      var Agent = Request.UserAgent;


        if (Agent.ToLower().Contains("windows"))
        {
            return "WINDOWS";
        }
        else if (Agent != null && (Agent.ToLower().Contains("android")))
        {
            return "ANDROID";
        }
        else if (Agent != null && (Agent.ToLower().Contains("ios")))
        {
            return "IOS";
        }
        else
        {
            return "WEB";
        }

但是当我使用 localhost 对其进行测试时,它会返回 windows 而不是 web 这里有什么问题?

标签: asp.net-mvcplatform

解决方案


public String GetUserEnvironment(HttpRequest request)
{
    var browser = request.Browser;
    var platform = GetUserPlatform(request);
    return string.Format("{0} {1} / {2}", browser.Browser, browser.Version, platform);
}

public String GetUserPlatform(HttpRequest request)
{
    var ua = request.UserAgent;

    if (ua.Contains("Android"))
        return string.Format("Android {0}", GetMobileVersion(ua, "Android"));

    if (ua.Contains("iPad"))
        return string.Format("iPad OS {0}", GetMobileVersion(ua, "OS"));

    if (ua.Contains("iPhone"))
        return string.Format("iPhone OS {0}", GetMobileVersion(ua, "OS"));

    if (ua.Contains("Linux") && ua.Contains("KFAPWI"))
        return "Kindle Fire";

    if (ua.Contains("RIM Tablet") || (ua.Contains("BB") && ua.Contains("Mobile")))
        return "Black Berry";

    if (ua.Contains("Windows Phone"))
        return string.Format("Windows Phone {0}", GetMobileVersion(ua, "Windows Phone"));

    if (ua.Contains("Mac OS"))
        return "Mac OS";

    if (ua.Contains("Windows NT 5.1") || ua.Contains("Windows NT 5.2"))
        return "Windows XP";

    if (ua.Contains("Windows NT 6.0"))
        return "Windows Vista";

    if (ua.Contains("Windows NT 6.1"))
        return "Windows 7";

    if (ua.Contains("Windows NT 6.2"))
        return "Windows 8";

    if (ua.Contains("Windows NT 6.3"))
        return "Windows 8.1";

    if (ua.Contains("Windows NT 10"))
        return "Windows 10";

    //fallback to basic platform:
    return request.Browser.Platform + (ua.Contains("Mobile") ? " Mobile " : "");
}

public String GetMobileVersion(string userAgent, string device)
{
    var temp = userAgent.Substring(userAgent.IndexOf(device) + device.Length).TrimStart();
    var version = string.Empty;

    foreach (var character in temp)
    {
        var validCharacter = false;
        int test = 0;

        if (Int32.TryParse(character.ToString(), out test))
        {
            version += character;
            validCharacter = true;
        }

        if (character == '.' || character == '_')
        {
            version += '.';
            validCharacter = true;
        }

        if (validCharacter == false)
            break;
    }

    return version;
}

在这里看到 - https://stackoverflow.com/a/32124271/4836581


推荐阅读