您能告诉我如何获取客户端在MVC 6,asp.net 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)
创建这样的类:
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();