600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > C#实现识别用户访问设备方法的示例代码详解

C#实现识别用户访问设备方法的示例代码详解

时间:2019-12-25 23:41:03

相关推荐

C#实现识别用户访问设备方法的示例代码详解

后端开发|C#.Net教程

C#,用户,访问设备

后端开发-C#.Net教程A、需求

博客div网页源码,vscode和idea前端,ubuntu icon尺寸,tomcat 图片显示,sqlite3 增加字段,向导插件,百度移动端开发前端框架,网络爬虫的不足与改进,php app源码,seo查询外链,discuz3.2迁移网站,网页时钟js,discuz论坛纯论坛模板lzw

需要获取到用户访问网站时使用的设备,根据不同设备返回不同类型的渲染页面。

shopnc源码安装,vscode自动补齐标签,ubuntu sh 卸载,tomcat中的缓存,sqlite3根据id选行,Fortran爬虫,php txt数据库,铜陵百度seo,开源教学视频网站,opencart改模板lzw

B、实现前准备

卡盟销售系统源码,vscode调出工具栏,ubuntu部落.pdf,部署tomcat文件少,金麒麟爬虫,php 中文分词技术,万词霸屏是什么seo公司lzw

通过NuGet把UAParser程序包添加到项目中

C、实现

新建UAParseUserAgent类文件,在这个文件中进行实现。

实现代码如下:

public class UAParserUserAgent{ private readonly static uap.Parser s_uap; private static readonly Regex s_pdfConverterPattern = new Regex(@"wkhtmltopdf", piled | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant); # region Mobile UAs, OS & Devices private static readonly HashSet s_MobileOS = new HashSet {"Android","iOS","Windows Mobile","Windows Phone","Windows CE","Symbian OS","BlackBerry OS","BlackBerry Tablet OS","Firefox OS","Brew MP","webOS","Bada","Kindle","Maemo" }; private static readonly HashSet s_MobileBrowsers = new HashSet {"Android","Firefox Mobile","Opera Mobile","Opera Mini","Mobile Safari","Amazon Silk","webOS Browser","MicroB","Ovi Browser","NetFront","NetFront NX","Chrome Mobile","Chrome Mobile iOS","UC Browser","Tizen Browser","Baidu Explorer","QQ Browser Mini","QQ Browser Mobile","IE Mobile","Polaris","ONE Browser","iBrowser Mini","Nokia Services (WAP) Browser","Nokia Browser","Nokia OSS Browser","BlackBerry WebKit","BlackBerry", "Palm","Palm Blazer","Palm Pre","Teleca Browser","SEMC-Browser","PlayStation Portable","Nokia","Maemo Browser","Obigo","Bolt","Iris","UP.Browser","Minimo","Bunjaloo","Jasmine","Dolfin","Polaris","Skyfire" }; private static readonly HashSet s_MobileDevices = new HashSet {"BlackBerry","MI PAD","iPhone","iPad","iPod","Kindle","Kindle Fire","Nokia","Lumia","Palm","DoCoMo","HP TouchPad","Xoom","Motorola","Generic Feature Phone","Generic Smartphone" }; #endregion private readonly HttpContextBase _httpContext; private string _rawValue; private UserAgentInfo _userAgent; private DeviceInfo _device; private OSInfo _os; private bool? _isBot; private bool? _isMobileDevice; private bool? _isTablet; private bool? _isPdfConverter; static UAParserUserAgent() {s_uap = uap.Parser.GetDefault(); } public UAParserUserAgent(HttpContextBase httpContext) {this._httpContext = httpContext; } public string RawValue {get{ if (_rawValue == null) {if (_httpContext.Request != null){ _rawValue = _httpContext.Request.UserAgent.ToString();}else{ _rawValue = "";} } return _rawValue;}// for (unit) test purposeset{ _rawValue = value; _userAgent = null; _device = null; _os = null; _isBot = null; _isMobileDevice = null; _isTablet = null; _isPdfConverter = null;} } public virtual UserAgentInfo UserAgent {get{ if (_userAgent == null) {var tmp = s_uap.ParseUserAgent(this.RawValue);_userAgent = new UserAgentInfo(tmp.Family, tmp.Major, tmp.Minor, tmp.Patch); } return _userAgent;} } public virtual DeviceInfo Device {get{ if (_device == null) {var tmp = s_uap.ParseDevice(this.RawValue);_device = new DeviceInfo(tmp.Family, tmp.IsSpider); } return _device;} } public virtual OSInfo OS {get{ if (_os == null) {var tmp = s_uap.ParseOS(this.RawValue);_os = new OSInfo(tmp.Family, tmp.Major, tmp.Minor, tmp.Patch, tmp.PatchMinor); } return _os;} } public virtual bool IsBot {get{ if (!_isBot.HasValue) {_isBot = _httpContext.Request.Browser.Crawler || this.Device.IsBot; } return _isBot.Value;} } public virtual bool IsMobileDevice {get{ if (!_isMobileDevice.HasValue) {_isMobileDevice = s_MobileOS.Contains(this.OS.Family) || s_MobileBrowsers.Contains(this.UserAgent.Family) || s_MobileDevices.Contains(this.Device.Family); } return _isMobileDevice.Value;} } public virtual bool IsTablet {get{ if (!_isTablet.HasValue) {_isTablet = Regex.IsMatch(this.Device.Family, "iPad|Kindle Fire|Nexus 10|Xoom|Transformer|MI PAD|IdeaTab", RegexOptions.CultureInvariant) || this.OS.Family == "BlackBerry Tablet OS"; } return _isTablet.Value;} } public virtual bool IsPdfConverter {get{ if (!_isPdfConverter.HasValue) {_isPdfConverter = s_pdfConverterPattern.IsMatch(this.RawValue); } return _isPdfConverter.Value;} }}public sealed class DeviceInfo{ public DeviceInfo(string family, bool isBot) {this.Family = family;this.IsBot = isBot; } public override string ToString() {return this.Family; } public string Family { get; private set; } public bool IsBot { get; private set; }}public sealed class OSInfo{ public OSInfo(string family, string major, string minor, string patch, string patchMinor) {this.Family = family;this.Major = major;this.Minor = minor;this.Patch = patch;this.PatchMinor = patchMinor; } public override string ToString() {var str = VersionString.Format(Major, Minor, Patch, PatchMinor);return (this.Family + (!string.IsNullOrEmpty(str) ? (" " + str) : null)); } public string Family { get; private set; } public string Major { get; private set; } public string Minor { get; private set; } public string Patch { get; private set; } public string PatchMinor { get; private set; } private static string FormatVersionString(params string[] parts) {return string.Join(".", (from v in parts where !string.IsNullOrEmpty(v) select v).ToArray()); }}public sealed class UserAgentInfo{ public UserAgentInfo(string family, string major, string minor, string patch) {this.Family = family;this.Major = major;this.Minor = minor;this.Patch = patch; } public override string ToString() {var str = VersionString.Format(Major, Minor, Patch);return (this.Family + (!string.IsNullOrEmpty(str) ? (" " + str) : null)); } public string Family { get; private set; } public string Major { get; private set; } public string Minor { get; private set; } public string Patch { get; private set; }}internal static class VersionString{ public static string Format(params string[] parts) {return string.Join(".", (from v in parts where !string.IsNullOrEmpty(v) select v).ToArray()); }}

控制器中代码:

UAParserUserAgent userAgent = new UAParserUserAgent(this.HttpContext);dto.OSInfo = userAgent.OS.ToString();dto.Device = userAgent.Device.ToString() != "Other" ? userAgent.Device.ToString() : "电脑";dto.Agent = userAgent.UserAgent.ToString();dto.RawValue = userAgent.RawValue.ToString();//if (userAgent.IsMobileDevice)//{// Debug.WriteLine("这是一个手机");// ViewBag.MobilePc = "手机";//}//else if (userAgent.IsTablet)//{// ViewBag.MobilePc = "平板";// Debug.WriteLine("这是一个平板");//}//else//{// ViewBag.MobilePc = "普通电脑";// Debug.WriteLine("这是一个普通电脑");//}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。