如何获取客户端的浏览器信息?

时间:2019-10-16 08:22:05

标签: c# browser .net-core asp.net-core-3.0

  

我如何在asp.net core 3.0.1中获取客户端的浏览器信息,我   尝试使用此代码,但是,它返回了用户的完整列表   浏览器,但是,我需要使用该浏览器的用户。

我使用的代码:

var userAgent = Request.Headers["User-Agent"].ToString();

我也尝试了这段代码,但是,它给了我错误:

UserAgent.UserAgent ua = new UserAgent.UserAgent(userAgent);

我搜索了许多链接,但是我没有找到所需的链接,这是我搜索过的一些链接:

  1. https://code.msdn.microsoft.com/How-to-get-OS-and-browser-c007dbf7
  2. How to get user Browser name ( user-agent ) in Asp.net Core?
  3. https://docs.microsoft.com/en-us/dotnet/api/system.web.httprequest.useragent?view=netframework-4.8
  4. https://www.c-sharpcorner.com/forums/how-to-get-current-browser-details-in-asp-net-core
  

是否可以通过任何方式获取客户端从中运行应用程序的浏览器名称和版本   使用Asp.Net Core 3.0.1吗?

2 个答案:

答案 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

相关问题