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

360影视 2025-01-14 08:40 2

摘要:在 .NET Framework 4.7 中那样,通过HttpContext.Request的Browser属性轻松获取发起 HTTP 请求的浏览器信息,ASP.NET Core 并未直接提供这一功能,现在有了 BrowserDetector 这个强大的 Nu

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

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

首先需要安装 BrowserDetector NuGet 包

Install-Package Shyjus.BrowserDetector启用浏览器检测服务在你的启动代码中,调用IServiceCollection上的方法来启用浏览器检测服务:services.AddBrowserDetection;注入并使用 IBrowserDetector接下来,你可以在控制器类、视图文件或中间件中注入IBrowserDetector,并访问其Browser属性来获取浏览器相关信息。在控制器中的使用示例public classHomeController : Controller
{
privatereadonly 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.Nameh2
h3>@browserDetector.Browser.Versionh3
h3>@browserDetector.Browser.OSh3
h3>@browserDetector.Browser.DeviceTypeh3在自定义中间件中的使用你还可以将注入到中间件的InvokeAsync方法中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返回的名称值具有特定含义,以下是常见名称的解释:

• 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

来源:opendotnet

相关推荐