关键词:
【中文标题】如何在 Asp.net Core 中获取用户浏览器名称(用户代理)?【英文标题】:How to get user Browser name ( user-agent ) in Asp.net Core? 【发布时间】:2015-04-24 05:52:15 【问题描述】:能否告诉我如何获取客户端在 MVC 6、ASP.NET 5 中使用的浏览器名称?
【问题讨论】:
【参考方案1】:我认为这很容易。在Request.Headers["User-Agent"].ToString()
得到答案
【讨论】:
这会将所有浏览器名称返回给我 @koboshRequest.Headers["User-Agent"].ToString()
请注意,如果请求没有用户代理,则会导致 KeyNotFoundException!一定要先用.ContainsKey检查!
从头开始。由于某种原因,它只是返回“”。万岁的一致性......
有些人可能更喜欢Request.Headers[HeaderNames.UserAgent]
避免使用字符串文字(可能在Core 1.0 中不起作用,不确定)【参考方案2】:
对我来说 Request.Headers["User-Agent"].ToString()
没有帮助导致返回所有浏览器名称,因此找到了以下解决方案。
已安装ua-parse。
在控制器using UAParser;
var userAgent = HttpContext.Request.Headers["User-Agent"];
var uaParser = Parser.GetDefault();
ClientInfo c = uaParser.Parse(userAgent);
使用上述代码后,可以使用c.UA.Family + " " + c.UA.Major +"." + c.UA.Minor
从 userAgent 获取浏览器详细信息
您还可以获取操作系统详细信息,例如c.OS.Family;
其中c.UA.Major
是浏览器主要版本,c.UA.Minor
是浏览器次要版本。
【讨论】:
这不是所有浏览器名称的列表,这是浏览器设置为用户代理的内容。 UAParser 知道如何获取所有这些名称并确定它的实际浏览器和操作系统。【参考方案3】: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
【讨论】:
该链接是最佳答案。 User-Agent 字符串是您必须破译和解析以获取版本信息的字符串。那里提供的课程完成了所有艰苦的工作。 此答案适用于 .NET Framework,而不是 .NET Core【参考方案4】:我开发了一个库来扩展 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());
【讨论】:
这是如何工作的?我看到你有一个DeviceResolver.cs
来确定它是移动设备、桌面还是桌面设备,但我看不到类似的代码来提取用户代理标头的详细信息。
我已经更新了repo,readme越来越成熟了。 github.com/wangkanai/Detection
@SarinNaWangkanai 谢谢你的库!太棒了:)【参考方案5】:
安装这个.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();
【讨论】:
ASP.Net Core 如何在 EF Core 和 Identity 中获取用户角色
】ASP.NetCore如何在EFCore和Identity中获取用户角色【英文标题】:ASP.NetCorehowtogettheuserroleinEFCoreandIdentity【发布时间】:2018-01-0814:25:00【问题描述】:您好,我正在使用Identity和自定义用户类和EFCore构建API。我想获取属于用户的角色... 查看详情
如何在 Asp.net core mvc 的控制器中获取自己的用户
】如何在Asp.netcoremvc的控制器中获取自己的用户【英文标题】:HowcanIgetmyownUserincontrollerinAsp.netcoremvc【发布时间】:2019-05-1708:11:56【问题描述】:我有用户类:publicclassUser:EntitypublicvoidAcceptMenu(Menumenu)//AcceptMenupublicstringLoginget;set;pub... 查看详情
如何在 ASP.NET Core 5 MVC (.NET 5) 中获取记录的用户数据?
】如何在ASP.NETCore5MVC(.NET5)中获取记录的用户数据?【英文标题】:HowtogetloggeduserdatainASP.NETCore5MVC(.NET5)?【发布时间】:2021-05-3007:21:48【问题描述】:我目前正在开发一个ASP.NETCore5MVCWeb项目,我使用默认创建的单用户帐户生成模板... 查看详情
如何在 ASP NET CORE 3.0 中获取当前登录的用户 ID?
】如何在ASPNETCORE3.0中获取当前登录的用户ID?【英文标题】:HowtogetcurrentloggedinuseridinASPNETCORE3.0?【发布时间】:2021-09-2310:45:16【问题描述】:我是一名学生,我正在努力学习如何在ASPNET中使用身份和关系,如果你能帮助我在哪里... 查看详情
登录 ASP.NET Core 3.1 后如何获取用户信息
】登录ASP.NETCore3.1后如何获取用户信息【英文标题】:HowtogetUserInformationafterlogininASP.NETCore3.1【发布时间】:2021-10-1908:46:54【问题描述】:我正在尝试在登录ASP.NETCore3.1后获取用户信息(姓名、电子邮件、ID等信息...)。这是我在... 查看详情
如何在 ASP.NET Core 2.1 中获取客户端 IP 地址
】如何在ASP.NETCore2.1中获取客户端IP地址【英文标题】:HowtogetClientIPaddressinASP.NETCore2.1【发布时间】:2018-06-3015:57:12【问题描述】:我正在使用MicrosoftVisualStudio2017提供的Angular模板开发ASP.NetCore2.1。我的客户端应用程序运行良好。... 查看详情
在 ASP.NET Core 中获取浏览器语言?
】在ASP.NETCore中获取浏览器语言?【英文标题】:GetbrowserlanguageinASP.NETCore?【发布时间】:2018-08-2903:03:27【问题描述】:我正在尝试从浏览器获取默认语言,我使用以下代码获取它:varlanguages=HttpContext.Request.UserLanguages;由于.NETCore2... 查看详情
如何在 ASP.NET core rc2 中禁用浏览器缓存?
】如何在ASP.NETcorerc2中禁用浏览器缓存?【英文标题】:HowtodisablebrowsercacheinASP.NETcorerc2?【发布时间】:2016-07-0618:56:12【问题描述】:我尝试了这个中间件,但浏览器仍在保存文件。我希望用户始终获得最新版本的js和css文件。pub... 查看详情
如何在 ASP .NET CORE Identity 中通过 SignInManager 登录后获取用户声明?
】如何在ASP.NETCOREIdentity中通过SignInManager登录后获取用户声明?【英文标题】:HowtogetuserclaimsaftersigninthroughSignInManagerinASP.NETCOREIdentity?【发布时间】:2018-09-1607:18:41【问题描述】:我有一个ASP.NETCore2.0项目,我在其中使用Microsoft的... 查看详情
如何使用 ASP.NET Core 从 DbContext 中的 JWT 获取用户名?
】如何使用ASP.NETCore从DbContext中的JWT获取用户名?【英文标题】:HowtogetusernamefromJWTinDbContextusingASP.NETCore?【发布时间】:2018-11-2300:46:00【问题描述】:在MyDbContext中,我有方法LogChanges,它使用以下信息记录我的logs表中的任何更改... 查看详情
如何在 asp.net core razor 页面中拒绝匿名用户?
】如何在asp.netcorerazor页面中拒绝匿名用户?【英文标题】:Howtodenyanonymoususersinasp.netcorerazorpages?【发布时间】:2019-12-2810:40:06【问题描述】:如何拒绝匿名用户访问除登录页面之外的asp.netcore中的任何剃须刀页面?我试过了service... 查看详情
如何在 ASP.NET Core 中获取 HttpContext.Current? [复制]
】如何在ASP.NETCore中获取HttpContext.Current?[复制]【英文标题】:HowtogetHttpContext.CurrentinASP.NETCore?[duplicate]【发布时间】:2016-11-2823:44:31【问题描述】:我们目前正在使用ASP.NETCore重写/转换我们的ASP.NETWebForms应用程序。尽量避免重新... 查看详情
如何在 ASP.NET Core MVC 中获取 Url Referrer?
】如何在ASP.NETCoreMVC中获取UrlReferrer?【英文标题】:HowcanIgetUrlReferrerinASP.NETCoreMVC?【发布时间】:2016-08-0416:08:21【问题描述】:我正在尝试将ASP.NETMVC网络表单迁移到ASP.NETCoreMVC。目前,我在使用Request.UrlReferrer课程时遇到了问题... 查看详情
如何在 ASP.NET Core 中获取我网站的 baseurl?
】如何在ASP.NETCore中获取我网站的baseurl?【英文标题】:HowcanIgetthebaseurlofmysiteinASP.NETCore?【发布时间】:2017-04-2017:56:06【问题描述】:假设我的网站托管在www.example.com的mywebsite文件夹中,我访问了https://www.example.com/mywebsite/home/abo... 查看详情
如何在 ASP.NET Core(.NET 6、VS 2022)中禁用浏览器链接
】如何在ASP.NETCore(.NET6、VS2022)中禁用浏览器链接【英文标题】:HowtodisableBrowserLinkinASP.NETCore(.NET6,VS2022)【发布时间】:2021-12-2508:42:30【问题描述】:我已禁用VisualStudio2022中的浏览器链接,并且我还禁用了所有热重载功能。即... 查看详情
用户在 ASP.NET Core Identity 中打开设置页面时如何询问密码?
】用户在ASP.NETCoreIdentity中打开设置页面时如何询问密码?【英文标题】:HowtoaskforpasswordwhenuseropensettingspageinASP.NETCoreIdentity?【发布时间】:2021-09-0200:43:57【问题描述】:我在ASP.NETCore3.1中配置了Web应用程序以将ASP.NETCoreIdentity与本... 查看详情
如何在 ASP.NET CORE 3.1 中获取客户端 IP 地址?
】如何在ASP.NETCORE3.1中获取客户端IP地址?【英文标题】:HowdoIgetclientIPaddressinASP.NETCORE3.1?【发布时间】:2020-04-2921:06:39【问题描述】:在WebAPI项目中编写代码时如何在ASP.NET3.1中获取客户端IP地址【问题讨论】:这能回答你的问题... 查看详情
如何获取 ASP.NET Core 中所有路由的列表?
】如何获取ASP.NETCore中所有路由的列表?【英文标题】:HowtogetalistofallroutesinASP.NETCore?【发布时间】:2015-04-1017:24:11【问题描述】:在ASP.NETCore中,有没有办法查看Startup中定义的所有路由的列表?我们使用IRouteBuilder的MapRoute扩展... 查看详情