前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >BrowserDetector:为 ASP.NET Core Web API 提供浏览器检测功能的利器

BrowserDetector:为 ASP.NET Core Web API 提供浏览器检测功能的利器

作者头像
郑子铭
发布2025-03-10 20:13:30
发布2025-03-10 20:13:30
2800
代码可运行
举报
运行总次数:0
代码可运行

在 .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 包

代码语言:javascript
代码运行次数:0
复制
Install-Package Shyjus.BrowserDetector

启用浏览器检测服务

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

代码语言:javascript
代码运行次数:0
复制
services.AddBrowserDetection();

注入并使用 IBrowserDetector

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

在控制器中的使用示例
代码语言:javascript
代码运行次数:0
复制
public classHomeController : Controller
{
    privatereadonly IBrowserDetector browserDetector;

    public HomeController(IBrowserDetector browserDetector)
    {
        this.browserDetector = browserDetector;
    }

    public IActionResult Index()
    {
        var browser = this.browserDetector.Browser;
        // 按需使用 browser 对象

        return View();
    }
}
在视图中的使用示例
代码语言:javascript
代码运行次数:0
复制
@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 方法中

代码语言:javascript
代码运行次数:0
复制
public classMyCustomMiddleware
{
    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
        {
            awaitthis.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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DotNet NB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何使用 BrowserDetector
    • 安装 NuGet 包
    • 启用浏览器检测服务
    • 注入并使用 IBrowserDetector
      • 在控制器中的使用示例
      • 在视图中的使用示例
      • 在自定义中间件中的使用
  • 解读 IBrowserDetector.Name 返回的名称值
  • 性能影响
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档