I'm working on an ASP.NET Core application where I need to store the user agent in my database for every time a client makes a request to our system. I'm using .NET Core 6, so  in this post, we'll discuss how to retrieve the user's browser name (user-agent) basicaly device type in .NET Core.

To retrieve the user's browser name (user-agent) in an ASP.NET Core application, we can utilize the IHttpContextAccessor service along with the Request.Headers collection. 

First, ensure that you have registered IHttpContextAccessor in the ConfigureServices method of your Startup class:


Then, within your controller or service where you need to access the user-agent, inject the IHttpContextAccessor service:

    private readonly IHttpContextAccessor _httpContextAccessor;

    public MyService(IHttpContextAccessor httpContextAccessor)
        _httpContextAccessor = httpContextAccessor;

Now, you can retrieve the user-agent from the Request.Headers collection:

    public string GetUserBrowserName()
        var userAgent = _httpContextAccessor.HttpContext.Request.Headers["User-Agent"].ToString();
        return userAgent;


If you're using .NET>= 6 , there's a convenient property you can use to retrieve the user-agent string. In a controller, you can access it like this:

    var userAgent = HttpContext.Request.Headers.UserAgent;

If you're not within a controller, you can inject an implementation of IHttpContextAccessor and access it as follows:

    using Microsoft.AspNetCore.Http;

    public class UserProifle
        private readonly IHttpContextAccessor _httpContextAccessor;

        public UserProifle(IHttpContextAccessor httpContextAccessor)
{ _httpContextAccessor = httpContextAccessor; } public string? GetUserAgent() { return _httpContextAccessor?.HttpContext?.Request.Headers.UserAgent; } }

Please note that you'll need to register IHttpContextAccessor by adding the following line of code in your program.cs or startup.cs based on your .net version.



If you are using Web API then in a Web API, we can access the user-agent header from the incoming HTTP request. We'll utilize the `HttpContext` to retrieve this information.

First, let's create a controller where we'll retrieve the user-agent:

// UserController.cs
using Microsoft.AspNetCore.Mvc;

public class UserController : ControllerBase
    public IActionResult GetUserAgent()
        string userAgent = Request.Headers["User-Agent"];
        return Ok(userAgent);

In UserController , we define a GET endpoint `/user-agent` which returns the user-agent string when a client makes a GET request to this endpoint, the `GetUserAgent` method is called, and we retrieve the user-agent header from the request.

GET request to `/user-agent`, you'll receive the user-agent string in the response body and but remember to handle cases where the user-agent may be missing or malformed.