您如何检测Api控制器中的当前浏览器?

Smo*_*ore 17 c# asp.net-mvc asp.net-mvc-4

我正在尝试使用MVC4在我的程序中的一个Api控制器中检测当前的Web浏览器.无论我看到人们都说要使用Request.Browser,但我无法让它发挥作用.有什么建议或者我有什么东西可以忽略吗?

eri*_*cdc 23

您可以像这样使用System.Web中的HttpBrowserCapabilities

        var userAgent = HttpContext.Current.Request.UserAgent;
        var 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;
Run Code Online (Sandbox Code Playgroud)

这依赖于Windows/System32/inetsrv /或Windows/SysWOW64/inetsrv中的browscap.ini进行定义.

本文也可能有所帮助 - http://stephenwalther.com/archive/2010/03/05/use-asp-net-4-browser-definitions-with-asp-net-3-5

  • 如果你使用HttpContext.Current.Request.UserAgent,为什么不使用HttpContext.Current.Request.Browser? (5认同)

Kir*_*lla 9

您可以在Web API的操作中执行类似的操作:

System.Net.Http.HttpRequestMessage currentRequest = this.Request;
System.Net.Http.Headers.HttpHeaderValueCollection<System.Net.Http.Headers.ProductInfoHeaderValue> userAgentHeader = currentRequest.Headers.UserAgent;
Run Code Online (Sandbox Code Playgroud)