在 .NET Framework 4.7 中那样,通过 HttpContext.RequestBrowser 属性轻松获取发起 HTTP 请求的浏览器信息,ASP.NET Core 并未直接提供这一功能,现在有了 BrowserDetector 这个强大的 NuGet 包,你可以在 ASP.NET Core 应用中轻松实现浏览器、设备类型以及操作系统的检测。

BrowserDetector 支持以下 .NET 框架版本: .NET 6/7/8

如何使用 BrowserDetector

安装 NuGet 包

首先需要安装 BrowserDetector NuGet 包

Install-Package Shyjus.BrowserDetector

启用浏览器检测服务

在你的启动代码中,调用 IServiceCollection 上的 AddBrowserDetection 方法来启用浏览器检测服务:

services.AddBrowserDetection();

注入并使用 IBrowserDetector

接下来,你可以在控制器类、视图文件或中间件中注入 IBrowserDetector,并访问其 Browser 属性来获取浏览器相关信息。

在控制器中的使用示例

public class HomeController : Controller
{
private readonly IBrowserDetector browserDetector; public HomeController(IBrowserDetector browserDetector)
{
this.browserDetector = browserDetector;
} public IActionResult Index()
{
var browser = this.browserDetector.Browser;
// 按需使用 browser 对象 return View();
}
}

在视图中的使用示例

@inject Shyjus.BrowserDetection.IBrowserDetector browserDetector

<h2>@browserDetector.Browser.Name</h2>
<h3>@browserDetector.Browser.Version</h3>
<h3>@browserDetector.Browser.OS</h3>
<h3>@browserDetector.Browser.DeviceType</h3>

在自定义中间件中的使用

你还可以将 IBrowserDetector 注入到中间件的 InvokeAsync 方法中

public class MyCustomMiddleware
{
private RequestDelegate next; public MyCustomMiddleware(RequestDelegate next)
{
this.next = next;
} public async Task InvokeAsync(HttpContext httpContext, IBrowserDetector browserDetector)
{
var browser = browserDetector.Browser; if (browser.Type == BrowserType.Edge)
{
await httpContext.Response.WriteAsync("Have you tried the new chromuim based edge ?");
}
else
{
await this.next.Invoke(httpContext);
}
}
}

解读 IBrowserDetector.Name 返回的名称值

IBrowserDetector.Name 返回的名称值具有特定含义,以下是常见名称的解释:

  • Firefox:Firefox 浏览器。
  • EdgeChromium:基于 Chromium 的新版 Microsoft Edge 浏览器。
  • Edge:旧版 Edge 浏览器。
  • Safari:Safari 浏览器。
  • Chrome:Chrome 浏览器。

性能影响

你可能会关心添加 BrowserDetector 包对应用性能的影响。经过基准测试,在 Safari 和 Chrome 桌面用户代理上的测试结果显示,检测结果的返回时间大约在 1 微秒 左右。堆内存分配会根据输入的不同而有所变化。以下是具体的测试数据:

方法 平均值
Chrome_Windows 1.057 us
Safari_Windows 1.093 us

1 微秒仅相当于一百万分之一秒,这意味着 BrowserDetector 对性能的影响微乎其微,你完全可以放心使用它来为你的 ASP.NET Core Web API 应用增添浏览器检测功能。

仓库地址:https://github.com/kshyju/BrowserDetector

ASP.NET Core 快速轻量级的浏览器检测和设备检测库的更多相关文章

  1. ASP.NET Core 快速入门(Razor Pages + Entity Framework Core)

    引子 自从 2009 年开始在博客园写文章,这是目前我写的最长的一篇文章了. 前前后后,我总共花了 5 天的时间,每天超过 3 小时不间断写作和代码调试.总共有 8 篇文章,每篇 5~6 个小结,总截 ...

  2. [外包]!采用asp.net core 快速构建小型创业公司后台管理系统(六.结语)

    到这里就结束了,真的结束了,源码会在文末分享! 另外录了两个视频,对这个系统进行了演示! 做有意义的事情,原此生无悔! 视频地址:使用asp.net core 快速构建权限管理模块1 使用asp.ne ...

  3. ASP.NET Core快速入门--学习笔记系列文章索引目录

    课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 抓住国庆假期的尾巴完成了此系列课程的学习笔记输出! ASP.NET Core快 ...

  4. 【笔记目录2】【jessetalk 】ASP.NET Core快速入门_学习笔记汇总

    当前标签: ASP.NET Core快速入门 共2页: 上一页 1 2  任务27:Middleware管道介绍 GASA 2019-02-12 20:07 阅读:15 评论:0 任务26:dotne ...

  5. 【笔记目录1】【jessetalk 】ASP.NET Core快速入门_学习笔记汇总

    当前标签: ASP.NET Core快速入门 共2页: 1 2 下一页  任务50:Identity MVC:DbContextSeed初始化 GASA 2019-03-02 14:09 阅读:16 ...

  6. ASP.NET Core 快速入门【第二弹-实战篇】

    上篇讲了asp.net core在linux上的环境部署.今天我们将做几个小玩意实战一下.用到的技术和工具有mysql.websocket.AngleSharp(爬虫html解析).nginx多站点部 ...

  7. ASP.NET Core 快速入门(实战篇)

    上篇讲了<asp.net core在linux上的环境部署>.今天我们将做几个小玩意实战一下.用到的技术和工具有mysql.websocket.AngleSharp(爬虫html解析).n ...

  8. ASP.NET Core 快速入门(环境篇)

    [申明]:本人.NET Core小白.Linux小白.MySql小白.nginx小白.而今天要说是让你精通Linux ... 的开机与关机.nginx安装与部署.Core的Hello World .. ...

  9. ASP.NET Core快速入门学习笔记(第1章:介绍与引入)

    课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 任务1:课程介绍 任务2:环境安装 下载地址:https://dotnet.m ...

  10. 【转】ASP.NET Core 快速入门(环境篇)

    原文链接:http://www.cnblogs.com/zhaopei/p/netcore.html [申明]:本人.NET Core小白.Linux小白.MySql小白.nginx小白.而今天要说是 ...

随机推荐

  1. gal game 杂谈——前言

    gal game 杂谈--前言 大年三十凌晨(早上)打算开始写了吧,作为第一篇先写一些前言好了. 第一次接触gal game还是在B站上看到有人玩<我和她的世界末日>当时觉得挺有意思的,加 ...

  2. 使用YARP来实现负载均衡

    YARP ("Yet Another Reverse Proxy") 是一个库,可帮助创建高性能.生产就绪且高度可自定义的反向代理服务器. YARP 是使用 ASP.NET 和 . ...

  3. Java中的Servlet基本概述

    1 Servlet基本生命周期 一个Servlet是HttpServlet的子类,由支持Servlet的服务器完成该子类的对象初始化的工作.当有多个客户端请求同一个Servlet时候,servlet引 ...

  4. golang之验证器validator

    快速安装 使用之前,我们先要获取validator这个库. # 第一次安装使用如下命令 go get github.com/go-playground/validator/v10 # 项目中引入包 i ...

  5. php调试工具之firePHP

    让PHP可以像js一样利用浏览器的控制台调试代码  ------- FirePHP(http://www.firephp.org/) 1. 安装FirePHP插件 在Chrome浏览器的应用商店中,搜 ...

  6. Node.js Express 框架(2)

    1.读取文件并返回给客户端 res.sendFile(path):读取文件并返回给客户端,适合静态页面 app.get("/",function(req,res){ res.sen ...

  7. kubeadm 部署k8s

    kubeadm 部署k8s 闲聊 考虑了很久,打算写一篇保姆级部署从0-1构建企业级cicd流水线,把工作上面所用到的技术点分享给大家.从最k8s,harbor,jenkins,gitlab,dock ...

  8. docker-compose开机自启动设置

    vi /etc/rc.d/rc.local /usr/local/bin/docker-compose -f /home/seafile/docker-compose.yml up -d 给rc.lo ...

  9. vue使用less 有报错(loaderContext.getResolve is not a function)

    1.安装less npm install less-loader --save 2.main.js 引入 import less from 'less' Vue.use(less) warning:如 ...

  10. Microsoft.Extensions.ServiceDiscovery 的 Consul 实现

    GitHub地址:https://github.com/vipwan/Biwen.Microsoft.Extensions.ServiceDiscovery.Consul 使用方式 添加 NuGet ...