Как обнаружить пользовательский агент в веб-сервисе WCF - PullRequest
6 голосов
/ 03 мая 2010

Как я могу обнаружить пользовательский агент в веб-сервисе? Мой веб-сервис реализован с использованием веб-сервиса WCF с basicHTTPBinding. Это будет сообщение от некоторых клиентов SOAP. Я хочу знать user-agent от клиентов.

Я хотел бы увидеть пример кода для этого.

Я использую веб-сервис на основе 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)] в верхней части класса, который реализует интерфейс службы. Затем с помощью System.Web.HttpContext.Current.Request.UserAgent выдает мне желаемый пользовательский агент.

Ответы [ 5 ]

12 голосов
/ 18 июля 2011

Существует еще один способ получить пользовательский агент без включения совместимости ASP.NET в web.config:

string userAgent = WebOperationContext.Current.IncomingRequest.Headers["User-Agent"];
5 голосов
/ 14 августа 2012

Вы также можете использовать:

WebOperationContext.Current.IncomingRequest.UserAgent

3 голосов
/ 24 августа 2010

Вы можете прочитать пользовательский агент из объекта HttpContext.Current.Request, если вы включите совместимость ASP.NET в web.config:

0 голосов
/ 23 июля 2010

Какой совершенно бесполезный ответ!

Это не тривиальная задача. Да, очевидно, можно получить строку user-agent, но как на самом деле это сделать? Я потратил 2 часа на проверку Google и так далее, но нашел ответ, похороненный в документации MSDN В Visual Studio из WebMethod попробуйте

this.Context.Request.UserAgent

Это должно сделать это!

0 голосов
/ 03 мая 2010

User-Agent - это стандартный HTTP-заголовок. Он будет доступен для вашего веб-сервиса точно так же, как и для CGI-подобных.

Вы даже не удосужились найти это, прежде чем опубликовать свой вопрос? В Google должно быть миллионы просмотров.

...