2013-06-25 37 views
13

我試圖在我的程序中使用MVC4在我的一個Api控制器中檢測當前的Web瀏覽器。我看到的每個人都說要使用Request.Browser,但是我無法讓它工作。任何建議或有我忽略的東西?如何檢測Api控制器中的當前瀏覽器?

+3

請求在APIController是HttpRequestMessage VS包含瀏覽器信息的HttpRequest 。要獲得瀏覽器功能,只需使用'HttpBrowserCapabilities bc = HttpContext.Current.Request.Browser;' –

回答

21

可以使用的HttpBrowserCapabilities的System.Web中這樣

 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; 

這依賴於在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

+3

如果使用HttpContext.Current.Request.UserAgent,爲什麼不使用HttpContext.Current.Request.Browser? –

7

你可以做這樣的事情從Web API的行動中,下列太:

System.Net.Http.HttpRequestMessage currentRequest = this.Request; 
System.Net.Http.Headers.HttpHeaderValueCollection<System.Net.Http.Headers.ProductInfoHeaderValue> userAgentHeader = currentRequest.Headers.UserAgent;