如何在Asp.net Core中获取用户浏览器名称(user-agent)?

How to get user Browser name ( user-agent ) in Asp.net Core?

您能否让我知道如何获取客户端在MVC 6,asp.net 5中使用的浏览器的名称?


我认为这很容易。 在Request.Headers["User-Agent"].ToString()中得到了答案

谢谢


对我来说,Request.Headers["User-Agent"].ToString()并不能帮助返回所有浏览器的名称,因此可以根据解决方案进行查找。

已安装ua-parse。
在控制器using UAParser;

1
2
3
4
var userAgent = httpContext.Request.Headers["User-Agent"];
string uaString = Convert.ToString(userAgent[0]);
var uaParser = Parser.GetDefault();
ClientInfo c = uaParser.Parse(uaString);

使用上述代码后,可以使用c.UserAgent.Family从userAgent获取浏览器详细信息
您还可以获取操作系统详细信息,例如c.OS.Family;


1
userAgent = Request.Headers["User-Agent"];

https://code.msdn.microsoft.com/How-to-get-OS-and-browser-c007dbf7(链接无效)
去4.8

https://docs.microsoft.com/zh-cn/dotnet/api/system.web.httprequest.useragent?view=netframework-4.8


我已经开发了一个库来扩展ASP.NET Core,以支持Wangkanai.Detection中的Web客户端浏览器信息检测。这应该可以让您标识浏览器名称。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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());
        }
    }
}