Не могли бы вы сообщить мне, как узнать имя браузера, который использует клиент в MVC 6, ASP.NET 5?
106
Не могли бы вы сообщить мне, как узнать имя браузера, который использует клиент в MVC 6, ASP.NET 5?
Я думаю, это было легко. Получил ответRequest.Headers["User-Agent"].ToString()
Благодарность
Request.Headers["User-Agent"].ToString()
Request.Headers[HeaderNames.UserAgent]
избегать строкового литерала (возможно, не сработало в Core 1.0, не уверен)Мне
Request.Headers["User-Agent"].ToString()
не помогло возвращение всех имен браузеров, поэтому я нашел следующее решение.Установил ua-parse . В контроллере
using UAParser;
var userAgent = httpContext.Request.Headers["User-Agent"]; string uaString = Convert.ToString(userAgent[0]); var uaParser = Parser.GetDefault(); ClientInfo c = uaParser.Parse(uaString);
после использования приведенного выше кода удалось получить сведения о браузере от userAgent с помощью
c.UserAgent.Family
вы также можете получить сведения об ОС, напримерc.OS.Family;
источник
userAgent = Request.Headers["User-Agent"];
https://code.msdn.microsoft.com/How-to-get-OS-and-browser-c007dbf7 (ссылка не работает) перейти на 4.8
https://docs.microsoft.com/en-us/dotnet/api/system.web.httprequest.useragent?view=netframework-4.8
источник
Я разработал библиотеку для расширения ASP.NET Core для поддержки обнаружения информации браузера веб-клиента на Wangkanai.Detection Это должно позволить вам идентифицировать имя браузера.
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()); } } }
источник
DeviceResolver.cs
узнать, мобильное ли это, настольное или настольное, но я не вижу похожего кода для извлечения деталей из заголовка пользовательского агента.Установите этот пакет .nuget
создайте такой класс:
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(); } }
в вашем контроллере вы можете прочитать пользовательский агент из заголовков http:
string userAgent = Request.Headers?.FirstOrDefault(s => s.Key.ToLower() == "user-agent").Value;
Затем вы можете проанализировать пользовательский агент:
var ua = YauaaSingleton.Analyzer.Parse(userAgent ); var browserName = ua.Get(UserAgent.AGENT_NAME).GetValue();
вы также можете получить уровень уверенности (чем выше, тем лучше):
var confidence = ua.Get(UserAgent.AGENT_NAME).GetConfidence();
источник