18

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

4

2 回答 2

24

您可以像这样使用 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;

这依赖于 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

于 2013-06-25T19:44:28.567 回答
10

您也可以在 Web API 的操作中执行以下操作:

System.Net.Http.HttpRequestMessage currentRequest = this.Request;
System.Net.Http.Headers.HttpHeaderValueCollection<System.Net.Http.Headers.ProductInfoHeaderValue> userAgentHeader = currentRequest.Headers.UserAgent;
于 2013-06-25T20:10:36.880 回答