English 简体中文 繁體中文 한국 사람 日本語 Deutsch русский بالعربية TÜRKÇE português คนไทย french
查看: 10|回复: 0

ASP.NET Core 快速轻量级的浏览器检测和设备检测库

[复制链接]
查看: 10|回复: 0

ASP.NET Core 快速轻量级的浏览器检测和设备检测库

[复制链接]
查看: 10|回复: 0

337

主题

0

回帖

1021

积分

金牌会员

积分
1021
789445

337

主题

0

回帖

1021

积分

金牌会员

积分
1021
2025-2-5 18:04:08 | 显示全部楼层 |阅读模式
在 .NET Framework 4.7 中那样,通过 HttpContext.Request 的 Browser 属性轻松获取发起 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_Windows1.057 usSafari_Windows1.093 us1 微秒仅相当于一百万分之一秒,这意味着 BrowserDetector 对性能的影响微乎其微,你完全可以放心使用它来为你的 ASP.NET Core Web API 应用增添浏览器检测功能。
仓库地址:https://github.com/kshyju/BrowserDetector
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

337

主题

0

回帖

1021

积分

金牌会员

积分
1021

QQ|智能设备 | 粤ICP备2024353841号-1

GMT+8, 2025-3-10 15:06 , Processed in 0.802356 second(s), 27 queries .

Powered by 智能设备

©2025

|网站地图