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

时间:2015-02-22 23:37:06

标签: asp.net-core asp.net-core-mvc

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

5 个答案:

答案 0 :(得分:94)

我觉得这很简单。得到了Request.Headers["User-Agent"].ToString()的答案。

答案 1 :(得分:8)

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

https://code.msdn.microsoft.com/How-to-get-OS-and-browser-c007dbf7

答案 2 :(得分:5)

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

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());
        }
    }
}

答案 3 :(得分:4)

对我来说,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);
使用以上代码后,

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

答案 4 :(得分:0)

安装此.nuget package

创建这样的类:

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();