2013-06-25 9 views
13

Próbuję wykryć aktualną przeglądarkę w jednym z moich kontrolerów Api w moim programie przy użyciu MVC4. Wszędzie wyglądam, jak ludzie mówią, aby używać Request.Browser, ale nie mogę tego zmusić do działania. Jakieś sugestie, czy jest coś, co przeoczyłem?Jak wykryłbyś bieżącą przeglądarkę w kontrolerze Api?

+3

Zapytanie w APIController jest HttpRequestMessage vs HttpRequest, który zawiera informacje na przeglądarkę . Aby uzyskać możliwości przeglądarki, po prostu użyj 'HttpBrowserCapabilities bc = HttpContext.Current.Request.Browser;' –

Odpowiedz

21

Można użyć HttpBrowserCapabilities w system.Web jak ten

 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; 

ta polega na Browscap.ini w systemie Windows/System32/inetsrv/lub Windows/syswow64/Inetsrv dla definicji.

Ten artykuł może również pomóc - http://stephenwalther.com/archive/2010/03/05/use-asp-net-4-browser-definitions-with-asp-net-3-5

+3

Jeśli używasz HttpContext.Current.Request.UserAgent, dlaczego nie używać HttpContext.Current.Request.Browser? –

7

Można zrobić coś jak po zbyt od wewnątrz działania API sieci Web:

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