/// <summary> /// Get client device type /// From Cache => Cookie => UserAgent /// </summary> /// <param name="context">Http context</param> /// <returns></returns> public static DeviceTypes GetClientDevice(this IHttpContext context) { var device = context.GetData <object>(DeviceKey); if (device != null) { return((DeviceTypes)device); } var deviceFromCookies = context.GetCookie(DeviceKey); if (!string.IsNullOrEmpty(deviceFromCookies)) { device = deviceFromCookies.ConvertOrDefault <DeviceTypes>(); } else { var userAgent = context.Request.GetUserAgent() ?? ""; device = MobileCheckRegex.IsMatch(userAgent) ? DeviceTypes.Mobile : DeviceTypes.Desktop; } context.PutData(DeviceKey, device); return((DeviceTypes)device); }