2013-06-25 15 views
13

Ben MVC4 kullanarak benim programda benim Api Kontrolörleri birinin içinde mevcut web tarayıcısını algılamaya çalışıyorum. Her yerde insanlar ancak bu işe alınamıyor, Request.Browser kullanmak demek bekliyoruz. Herhangi bir öneri veya baktığım bir şey var mı?Nasıl bir Api Kontrolördeki mevcut tarayıcıyı tespit edecek?

+3

İste HttpRequestMessage tarayıcı bilgisini içerir HTTPRequest vs olduğu . tarayıcı yeteneklerini almak için, sadece 'HttpBrowserCapabilities = HttpContext.Current.Request.Browser bc kullanın;' –

cevap

21

Bu tanımları için Windows/System32/inetsrv/veya Windows/SysWOW64/Inetsrv içinde browscap.ini dayanan bu

 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; 

gibi System.Web içinde HttpBrowserCapabilities kullanabilirsiniz.

Bu makale de yardımcı olabilir - http://stephenwalther.com/archive/2010/03/05/use-asp-net-4-browser-definitions-with-asp-net-3-5

+3

Eğer HttpContext.Current.Request.UserAgent kullanırsanız, neden HttpContext.Current.Request.Browser kullanılmasın? –

7

Web API eylem içinden çok aşağıdaki gibi bir şey yapabileceğini:

bir APIController içinde
System.Net.Http.HttpRequestMessage currentRequest = this.Request; 
System.Net.Http.Headers.HttpHeaderValueCollection<System.Net.Http.Headers.ProductInfoHeaderValue> userAgentHeader = currentRequest.Headers.UserAgent; 
İlgili konular