2013-06-25 38 views
13

Tôi đang cố gắng phát hiện trình duyệt web hiện tại trong một trong các Bộ điều khiển Api của tôi trong chương trình của tôi bằng MVC4. Ở khắp mọi nơi tôi nhìn mọi người nói để sử dụng Request.Browser, tuy nhiên tôi không thể làm điều đó để làm việc. Bất kỳ đề xuất hoặc có cái gì tôi nhìn?Làm cách nào để bạn phát hiện trình duyệt hiện tại trong Bộ điều khiển Api?

+3

Yêu cầu trong một APIController là một HttpRequestMessage vs các HttpRequest có chứa các thông tin trình duyệt . Để có được khả năng của trình duyệt, chỉ cần sử dụng 'HttpBrowserCapabilities bc = HttpContext.Current.Request.Browser;' –

Trả lời

21

Bạn có thể sử dụng HttpBrowserCapabilities trong System.Web như thế này

 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; 

này dựa trên browscap.ini trong Windows/System32/inetsrv/hoặc Windows/SysWOW64/inetsrv cho các định nghĩa.

Bài viết này cũng có thể giúp - http://stephenwalther.com/archive/2010/03/05/use-asp-net-4-browser-definitions-with-asp-net-3-5

+3

Nếu bạn sử dụng HttpContext.Current.Request.UserAgent, tại sao không sử dụng HttpContext.Current.Request.Browser? –

7

Bạn có thể làm một cái gì đó như sau quá từ bên trong hành động API Web:

System.Net.Http.HttpRequestMessage currentRequest = this.Request; 
System.Net.Http.Headers.HttpHeaderValueCollection<System.Net.Http.Headers.ProductInfoHeaderValue> userAgentHeader = currentRequest.Headers.UserAgent; 
Các vấn đề liên quan