我如何在asp.net core 3.0.1中获取客户端的浏览器信息,我 尝试使用此代码,但是,它返回了用户的完整列表 浏览器,但是,我需要使用该浏览器的用户。
我使用的代码:
var userAgent = Request.Headers["User-Agent"].ToString();
我也尝试了这段代码,但是,它给了我错误:
UserAgent.UserAgent ua = new UserAgent.UserAgent(userAgent);
我搜索了许多链接,但是我没有找到所需的链接,这是我搜索过的一些链接:
是否可以通过任何方式获取客户端从中运行应用程序的浏览器名称和版本 使用Asp.Net Core 3.0.1吗?
答案 0 :(得分:1)
您可以安装Wangkanai.Detection
软件包。完整的文档可以在这里找到:https://github.com/wangkanai/Detection
检测库的安装现在通过单个软件包完成 参考点。
PM> install-package Wangkanai.Detection -pre
尽管只需要特定的解析器,仍然可以安装单个软件包。
PM> install-package Wangkanai.Detection.Device -pre
PM> install-package Wangkanai.Detection.Browser -pre
PM> install-package Wangkanai.Detection.Engine -pre //concept
PM> install-package Wangkanai.Detection.Platform -pre //concept
PM> install-package Wangkanai.Detection.Crawler -pre
安装Responsive
库将引入所有依赖项程序包(其中将包括Wangkanai.Detection.Device
)。
PM> install-package Wangkanai.Responsive -pre
我认为以下内容足以满足您的需求:
install-package Wangkanai.Detection -pre
install-package Wangkanai.Detection.Browser -pre
然后,您需要通过在Startup.cs
方法中添加检测服务来配置ConfigureServices
:
public void ConfigureServices(IServiceCollection services)
{
// Add detection services container and device resolver service.
services.AddDetection();
services.AddDetectionCore().AddBrowser();
// Add framework services.
services.AddMvc();
}
最后在您的Controller
中,执行以下操作:
public class HomeController : Controller
{
private readonly IDetection _detection;
public HomeController(IDetection detection)
{
_detection = detection;
}
public IActionResult Index()
{
string browser_information = _detection.Browser.Type.ToString() +
_detection.Browser.Version;
//...
}
}
答案 1 :(得分:0)
您可以使用Ubuntu来提供可靠的语义解析。
举一个简单的例子,我将使用单例而不是依赖注入:
public static class YauaaSingleton
{
private static UserAgentAnalyzer.UserAgentAnalyzerBuilder Builder { get; }
private static readonly Lazy<UserAgentAnalyzer> analyzer = new Lazy<UserAgentAnalyzer> (() => Builder.Build());
public static UserAgentAnalyzer Analyzer
{
get
{
return analyzer.Value;
}
}
static YauaaSingleton()
{
Builder = UserAgentAnalyzer.NewBuilder();
Builder.DropTests();
Builder.DelayInitialization();
Builder.WithCache(100);
Builder.HideMatcherLoadStats();
Builder.WithAllFields();
}
}
然后在您的控制器中:
var userAgentString = this.HttpContext?.Request?.Headers?.FirstOrDefault(s => s.Key.ToLower() == "user-agent").Value;
var ua = YauaaSingleton.Analyzer.Parse(userAgentString);
var browserNameField = ua.Get(DefaultUserAgentFields.AGENT_NAME);
var browserVersionField = ua.Get(DefaultUserAgentFields.AGENT_VERSION);
Debug.WriteLine(browserNameField.GetValue());
Debug.WriteLine(browserVersionField.GetValue());
有关工作示例,您可以找到完整的asp.net核心项目this nuget package