Как я могу обнаружить агент пользователя в веб-сервисе? Мой веб-сервис реализован с помощью веб-сервиса WCF с basicHTTPBinding. Это будет сообщение от некоторых клиентов SOAP. Я хочу знать агент пользователя от клиентов.
Мне понравится видеть некоторый пример кода для этого.
Я использую базирующийся веб-сервис WCF и в svc.cs, я пытался поймать this.Context.Request.UserAgent
. Но это дает следующую ошибку:
this.Context.Request.UserAgent 'MySoapService.MyService' does not contain a definition for 'Context' and no extension method 'Context' accepting a first argument of type 'MySoapService.MyService' could be found (are you missing a using directive or an assembly reference?)
Я также попробовал System.Web.HttpContext.Current.Request.UserAgent
и это говорит:
'System.Web.HttpContext.Current' is null
Примечание редактирования:
Я пытался активировать режим эмуляции ASP.NET. Я добавил <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
в файле конфигурации и добавил [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
на вершине класса, который реализует сервисный интерфейс. Затем использование Системы. Сеть. HttpContext. Текущий. Запрос. UserAgent дает мне агент пользователя, как желаемый.
Вы можете прочитать агент пользователя из объекта HttpContext.Current.Request, если включите совместимость с ASP.NET в web.config:
User-Agent - это стандартный заголовок HTTP. Он будет доступен для вашего веб-сервиса так же, как он доступен для чего-либо подобного CGI.
Вы пытались найти это перед тем, как опубликовать свой вопрос? Для этого в Google должны быть миллионы просмотров.
Какой совершенно бесполезный ответ!
Это нетривиальная задача. Да, очевидно, что можно получить строку пользовательского агента, но как это сделать на самом деле? Я потратил 2 часа на проверку google и так далее, но нашел ответ в документации MSDN. В Visual Studio из WebMethod попробуйте
this.Context.Request.UserAgent
. Это должно сработать!