Bạn có thể vui lòng cho tôi biết cách lấy tên của trình duyệt mà khách hàng đang sử dụng trong MVC 6, asp.net 5 không?
Câu trả lời:
Tôi nghĩ rằng đây là một trong những dễ dàng. Có câu trả lời trongRequest.Headers["User-Agent"].ToString()
Cảm ơn
Request.Headers["User-Agent"].ToString()
Request.Headers[HeaderNames.UserAgent]
như tránh ký tự chuỗi (có thể không hoạt động trong Core 1.0, không chắc chắn)
Đối với tôi đã không Request.Headers["User-Agent"].ToString()
giúp trả lại tất cả các tên trình duyệt, do đó, tìm thấy giải pháp sau đây.
Đã cài đặt ua-parse . Trong bộ điều khiểnusing UAParser;
var userAgent = httpContext.Request.Headers["User-Agent"];
string uaString = Convert.ToString(userAgent[0]);
var uaParser = Parser.GetDefault();
ClientInfo c = uaParser.Parse(uaString);
Sau khi sử dụng mã trên, bạn có thể lấy thông tin chi tiết về trình duyệt từ userAgent bằng cách sử dụng c.UserAgent.Family
Bạn có thể lấy chi tiết hệ điều hành nhưc.OS.Family;
userAgent = Request.Headers["User-Agent"];
https://code.msdn.microsoft.com/How-to-get-OS-and-browser-c007dbf7 (liên kết không hoạt động) đi với giá 4.8
https://docs.microsoft.com/en-us/dotnet/api/system.web.httprequest.useragent?view=netframework-4.8
Tôi đã phát triển một thư viện để mở rộng ASP.NET Core để hỗ trợ phát hiện thông tin trình duyệt máy khách web tại Wangkanai.Detection Điều này sẽ cho phép bạn xác định tên trình duyệt.
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
tìm xem đó là thiết bị di động, bảng hay máy tính để bàn, nhưng tôi không thể thấy mã tương tự để trích xuất chi tiết của tiêu đề tác nhân người dùng.
Cài đặt cái này gói .nuget
tạo một lớp như thế này:
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();
}
}
trong bộ điều khiển của bạn, bạn có thể đọc tác nhân người dùng từ các tiêu đề http:
string userAgent = Request.Headers?.FirstOrDefault(s => s.Key.ToLower() == "user-agent").Value;
Sau đó, bạn có thể phân tích cú pháp tác nhân người dùng:
var ua = YauaaSingleton.Analyzer.Parse(userAgent );
var browserName = ua.Get(UserAgent.AGENT_NAME).GetValue();
bạn cũng có thể nhận được mức độ tin cậy (càng cao càng tốt):
var confidence = ua.Get(UserAgent.AGENT_NAME).GetConfidence();