Bisakah Anda memberi tahu saya cara mendapatkan nama browser yang digunakan klien di MVC 6, ASP.NET 5?
c#
asp.net-core
asp.net-core-mvc
eadam
sumber
sumber
Request.Headers["User-Agent"].ToString()
Request.Headers[HeaderNames.UserAgent]
menghindari string literal (mungkin tidak bekerja di Core 1.0, tidak yakin)Bagi saya tidak
Request.Headers["User-Agent"].ToString()
membantu karena mengembalikan semua nama browser sehingga menemukan solusi berikut.Ua-parse diinstal . Dalam pengontrol
using UAParser;
var userAgent = httpContext.Request.Headers["User-Agent"]; string uaString = Convert.ToString(userAgent[0]); var uaParser = Parser.GetDefault(); ClientInfo c = uaParser.Parse(uaString);
setelah menggunakan kode di atas bisa mendapatkan detail browser dari userAgent dengan menggunakan
c.UserAgent.Family
Anda juga bisa mendapatkan detail OS sepertic.OS.Family;
sumber
userAgent = Request.Headers["User-Agent"];
https://code.msdn.microsoft.com/How-to-get-OS-and-browser-c007dbf7 (tautan tidak langsung) gunakan 4.8
https://docs.microsoft.com/en-us/dotnet/api/system.web.httprequest.useragent?view=netframework-4.8
sumber
Saya telah mengembangkan perpustakaan untuk memperluas ASP.NET Core untuk mendukung deteksi informasi browser klien web di Wangkanai.Detection Ini akan memungkinkan Anda mengidentifikasi nama browser.
namespace Wangkanai.Detection { /// <summary> /// Provides the APIs for query client access device. /// </summary> public class DetectionService : IDetectionService { public HttpContext Context { get; } public IUserAgent UserAgent { get; } public DetectionService(IServiceProvider services) { if (services == null) throw new ArgumentNullException(nameof(services)); this.Context = services.GetRequiredService<IHttpContextAccessor>().HttpContext; this.UserAgent = CreateUserAgent(this.Context); } private IUserAgent CreateUserAgent(HttpContext context) { if (context == null) throw new ArgumentNullException(nameof(Context)); return new UserAgent(Context.Request.Headers["User-Agent"].FirstOrDefault()); } } }
sumber
DeviceResolver.cs
mencari tahu apakah itu seluler, tabel, atau desktop, tetapi saya tidak dapat melihat kode serupa untuk mengekstrak detail dari header agen pengguna.Pasang ini paket .nuget
buat kelas seperti ini:
public static class YauaaSingleton { private static UserAgentAnalyzer.UserAgentAnalyzerBuilder Builder { get; } private static UserAgentAnalyzer analyzer = null; public static UserAgentAnalyzer Analyzer { get { if (analyzer == null) { analyzer = Builder.Build(); } return analyzer; } } static YauaaSingleton() { Builder = UserAgentAnalyzer.NewBuilder(); Builder.DropTests(); Builder.DelayInitialization(); Builder.WithCache(100); Builder.HideMatcherLoadStats(); Builder.WithAllFields(); } }
di pengontrol Anda, Anda dapat membaca agen pengguna dari header http:
string userAgent = Request.Headers?.FirstOrDefault(s => s.Key.ToLower() == "user-agent").Value;
Kemudian Anda dapat mengurai agen pengguna:
var ua = YauaaSingleton.Analyzer.Parse(userAgent ); var browserName = ua.Get(UserAgent.AGENT_NAME).GetValue();
Anda juga bisa mendapatkan tingkat kepercayaan (lebih tinggi lebih baik):
var confidence = ua.Get(UserAgent.AGENT_NAME).GetConfidence();
sumber