欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來(lái)到入門教程網(wǎng)!

C#教程

當(dāng)前位置:主頁(yè) > 軟件編程 > C#教程 >

.NET/C#實(shí)現(xiàn)識(shí)別用戶訪問(wèn)設(shè)備的方法

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C#教程|點(diǎn)擊: 次

本文實(shí)例講述了.NET/C#實(shí)現(xiàn)識(shí)別用戶訪問(wèn)設(shè)備的方法。分享給大家供大家參考,具體如下:

一、需求

需要獲取到用戶訪問(wèn)網(wǎng)站時(shí)使用的設(shè)備,根據(jù)不同設(shè)備返回不同類型的渲染頁(yè)面。

二、實(shí)現(xiàn)前準(zhǔn)備

通過(guò)NuGet把UAParser程序包添加到項(xiàng)目中

三、實(shí)現(xiàn)

新建UAParseUserAgent類文件,在這個(gè)文件中進(jìn)行實(shí)現(xiàn)。

實(shí)現(xiàn)代碼如下:

public class UAParserUserAgent
{
    private readonly static uap.Parser s_uap;
    private static readonly Regex s_pdfConverterPattern = new Regex(@"wkhtmltopdf", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
    # region Mobile UAs, OS & Devices
    private static readonly HashSet<string> s_MobileOS = new HashSet<string>
    {
      "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<string> s_MobileBrowsers = new HashSet<string>
    {
      "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<string> s_MobileDevices = new HashSet<string>
    {
      "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 purpose
      set
      {
        _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<string>());
    }
}
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<string>());
    }
}

控制器中代碼:

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("這是一個(gè)手機(jī)");
//  ViewBag.MobilePc = "手機(jī)";
//}
//else if (userAgent.IsTablet)
//{
//  ViewBag.MobilePc = "平板";
//  Debug.WriteLine("這是一個(gè)平板");
//}
//else
//{
//  ViewBag.MobilePc = "普通電腦";
//  Debug.WriteLine("這是一個(gè)普通電腦");
//}

更多關(guān)于C#相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《C#程序設(shè)計(jì)之線程使用技巧總結(jié)》、《WinForm控件用法總結(jié)》、《C#中XML文件操作技巧匯總》、《C#常見(jiàn)控件用法教程》、《C#數(shù)據(jù)結(jié)構(gòu)與算法教程》、《C#數(shù)組操作技巧總結(jié)》及《C#面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》

希望本文所述對(duì)大家C#程序設(shè)計(jì)有所幫助。

上一篇:讀寫XML文件的內(nèi)容并將其顯示在ListView控件上的方法

欄    目:C#教程

下一篇:C# 特殊的string類型詳解

本文標(biāo)題:.NET/C#實(shí)現(xiàn)識(shí)別用戶訪問(wèn)設(shè)備的方法

本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/5924.html

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有