asp.net-mvc - 如何检查用户平台是否是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 这里有什么问题?
解决方案
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;
}
推荐阅读
- azure - 无法将 golang 应用部署到 Azure 应用服务容器
- java - ImageAnalysis 用例 CameraX 人脸检测
- html - vite 无法处理 xxx.html 文件
- visual-studio-code - 扩展主机意外终止(vscode - reactjs)
- java - 普罗米修斯没有显示正确的结果
- mysql - 更新命令在 MySql 工作台中不起作用
- android - 模拟器:警告:崩溃服务未启动模拟器:错误:在内核映像文件中找不到“Linux 版本”字符串:
- javascript - 如何为使用 JavaScript 创建的 HTML 元素添加 CSS 样式?
- lua - 如何设置LUA中MoveMouseRelative函数的执行时间?
- flutter - Flutter:- 如何返回或重定向(导航) 3-4 屏幕上一页