2014-12-01 3 views
-1

Я пытаюсь получить некоторые из пользователей API запросить информацию, как устройство, которое они используют и операционную систему, так что я пробовал так:Web апите HttpContext.Current.Request.UserAgent всегда пустой

private string GetDeviceInfo() 
    { 
     var userAgent = HttpContext.Current.Request.UserAgent; 
     var uaParser = Parser.GetDefault(); 
     var c = uaParser.Parse(userAgent); 
     return c.Device + "|" + c.OS + "|" + c.UserAgent; 
    } 

, но HttpContext.Current.Request.UserAgent всегда null!. Я искал об этом и пробовал это link, не могли бы вы рассказать мне, что не так?

+0

вы активизировали через код ..? если да, то какие значения находятся в 'userAgent' также смотрите на эту публикацию. http://www.codeproject.com/Articles/42347/How-to-Detect-Browser-Capabilities-in-ASP-NET – MethodMan

+0

may ваш клиент не отправляет заголовок пользовательского агента. как вы обращаетесь к своему апи? @Figo –

+0

@DJKRAZE 'userAgent' является' null', поскольку 'HttpContext.Current.Request.UserAgent' является' null', он выдает исключение вида 'System.ArgumentNullException: значение не может быть null. Имя параметра: ввод в System.Text.RegularExpressions.Regex.Match (ввод строки) на UAParser.Parser.Parsers. || c_DisplayClass43'1. | Создать | b41 (ввод строки) '! –

ответ

4

Request.UserAgent - это всего лишь значение "user agent" header в запросе HTTP. Браузер автоматически отправит его со всеми запросами (включая AJAX), клиенты без браузера, как правило, не будут включать такой заголовок.

Если ваш «клиент» не является браузером, ему необходимо добавить заголовок с соответствующими значениями.

образца при использовании HttpWebRequest

var request = (HttpWebRequest)WebRequest.Create("http://www.contoso.com"); 
request.UserAgent="My custom user agent string"; 
var response = (HttpWebResponse)myHttpWebRequest.GetResponse(); 
+0

Да, я попытался вызвать свой api с консольным приложением и веб-браузером, я получил разницу, спасибо за ваш ответ. –

Смежные вопросы