在 .NET Framework 4.7 中那样,通过HttpContext.Request的Browser属性轻松获取发起 HTTP 请求的浏览器信息,ASP.NET Core 并未直接提供这一功能,现在有了 BrowserDetector 这个强大的 NuGet 包,你可以在 ASP.NET Core 应用中轻松实现浏览器、设备类型以及操作系统的检测。摘要:在 .NET Framework 4.7 中那样,通过HttpContext.Request的Browser属性轻松获取发起 HTTP 请求的浏览器信息,ASP.NET Core 并未直接提供这一功能,现在有了 BrowserDetector 这个强大的 Nu
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
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!