Smoore Smoore - 4 months ago 38
C# Question

How would you detect the current browser in an Api Controller?

I'm trying to detect the current web browser within one of my Api Controllers in my program using MVC4. Everywhere I look people say to use

Request.Browser
, however I can't get that to work. Any suggestions or is there something I'm overlooking?

Answer

You can use the HttpBrowserCapabilities in System.Web like this

        var userAgent = HttpContext.Current.Request.UserAgent;
        userBrowser = new HttpBrowserCapabilities { Capabilities = new Hashtable { { string.Empty, userAgent } } };
        var factory = new BrowserCapabilitiesFactory();
        factory.ConfigureBrowserCapabilities(new NameValueCollection(), userBrowser);

        //Set User browser Properties
        BrowserBrand = userBrowser.Browser;
        BrowserVersion = userBrowser.Version;

This relies on browscap.ini in Windows/System32/inetsrv/ or Windows/SysWOW64/inetsrv for definitions.

This article may also help - http://stephenwalther.com/archive/2010/03/05/use-asp-net-4-browser-definitions-with-asp-net-3-5